我的php版本是5.2.13,ysql版本是5.0,在执行下面的语句时
$con = mysql_connect($host_port,$user,$passwd);
报了错误:
PHP Fatal error:  Call to undefined function mysql_connect()我查看了下phpinfo()里的信息,有如下两个选项:'--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/bin/mysql_config' 
另外,在我的/etc/php.ini中查看extension_dir = "/usr/lib64/php/modules",在/usr/lib64/php/modules 这个目录下,却发现没有mysql.so文件。
我尝试了下:

/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so
下的mysql.so拷贝到 /usr/lib64/php/modules下,再执行一次
$con = mysql_connect($host_port,$user,$passwd);
仍然报: Call to undefined function mysql_connect()请问我是不是还要装某些包啊?比如php-mysql和papache2-mod_php这两个包

解决方案 »

  1.   

    mysql启动了吗?service mysql start 或者 service mysqld start 
    或者查看一下而 error log 
      

  2.   

    我用 service mysqld start启动了,但仍报找不到函数的错误,我想问题应该仍是php找不到与mysql相关的函数
    /etc/php.ini中查看extension_dir = "/usr/lib64/php/modules"
    此modules中是没有mysql.so文件的
      

  3.   

    先看看你的mysql服务是否启动 在测试你的代码
      

  4.   

    说和mysql服务相关的一律拉出去打板子
    php和mysql的关系都搞不清楚
      

  5.   

    呵呵,我的后台mysql服务确实启动了
      

  6.   

    我感觉,我的问题确实不是和mysql相关,而是和php没有装哪些包,认识不了mysql相关函数,可是接下来,我不知道要怎么办了
      

  7.   

    您是指编译php和mysql吗?我用的是公司提代的rpm包,不用编译的。而且这台机子上有其它人在用,卸载再重装的话,影响 面会比较广,所以想先确定下,到底是不是少装了包的原因,是否再装个包就行了,而不需要卸载php
      

  8.   

    错误日志路径 在哪里啊?
    我在网上查了下资料,有的说是要装 php-mysql包,我装了下,确实在/usr/lib64/php/modules目录下就多了mysql.so和其它几个so文件,但执行时报了新的错误:PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysql.so' - libmysqlclient.so.16: cannot open shared object file: No such file or directory in Unknown on line 0   
      

  9.   

    看下php.ini
    extention=mysql.so  加一行这个
      

  10.   

    重新编译php就对了.将mysql扩展给带上,如果mysql不是系统带的自己编译的 记得带上路径即可.
      

  11.   

    错误表名,没用加载到MYSQL共享库,尝试重新编译是去掉MYSQL选项,使用 --enable-mysqlnd
      

  12.   

    你看一下你执行php的用户对于mysql.so的权限
      

  13.   

    mysql.so的用户是root,执行时mysql_connect($host_port,$user,$passwd);这一句,是以个人身份abc运行,其 中user是abc123同样的权限,我在另一台机器上是可以运行的
      

  14.   

    你把mysql.so加进去以后重启apache了么?怎么感觉没重启就去看phpinfo呢。
    apachectl restart  ...
      

  15.   

    用yum装的,你就yum编译mysql.so啊,也是有的。
      

  16.   

    那就看你的mysql.so对于其他组有没有执行权限。
      

  17.   


    还是重装吧。估计cmake时,什么地方没编译好。
      

  18.   

    …… linux?
    好吧,我只用过apt-get的lamp自动安装的
      

  19.   

    趁 着周末继续倒腾环境,
    我看了下,/usr/lib64/php/modules下的所有so,比如,mysql.so,pdo_mysql.so等等对所有组的人都有可读和可执行权限的
      

  20.   

    今天重启了,看phpinfo()时,也看到了下面的信息:
    additional .ini files parsed => /etc/php.d/dbase.ini,
    /etc/php.d/mysql.ini,
    /etc/php.d/mysqli.ini,
    /etc/php.d/pdo.ini,
    /etc/php.d/pdo_mysql.ini
    但是在执行$con = mysql_connect($host_port,$user,$passwd);
    时仍然报了错误 
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysql.so' - libmysqlclient.so.16: cannot open shared object file: No such file or directory in Unknown on line 0
    Call to undefined function mysql_connect() 
      

  21.   


    我装了一个包, MySQL-shared-compat  ,
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysql.so' - libmysqlclient.so.16: cannot open shared object file: No such file or directory in Unknown on line 0
    这样的错误就没有了,但同时就又出现了新的错误
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo.so' - /usr/lib64/php/modules/pdo.so: undefined symbol: gc_remove_zval_from_buffer in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' - /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
      

  22.   

    没有依赖包,安装的时候最好用yum安装
      

  23.   

    你这样子一个一个load动态库太容易出错了
    有可能出编译版本不对应,基础库,等等许多问题建议你从源码编译,配合好,执行效率高,错误信息更清晰。
      

  24.   

    我终于在周末搞定了,谢谢大家的各种建议, undefined symbol: gc_remove_zval_from_buffer in Unknown on line 0

    undefined symbol: php_pdo_register_driver in Unknown on line 0 
    的原因是:php-pdo和php版本不符
    本机装的php版本是5.2.13,而rpm -qa|grep php可看到php-pdo-5.3.9-1.el5
    所以先卸载了php-mysql和php-pdo,直接装与5.2版本对应的包
    sudo yum install php-pdo-5.2.13 -b test -y
    再装
    sudo yum install php-mysql-5.2.13-2 -b test
    就行了
      

  25.   

    楼主,mysql 可以用其它的客户端连接么? 排错一步一步的来~
    还有单从这句call to undefined function 更像是模块没加载的问题。 重新编译几次试试。
    请把你编译时的 configure 发出来看看~