【问题标题】:PHP Fatal error : Call to undefined function mysql_connect()PHP 致命错误:调用未定义函数 mysql_connect()
【发布时间】:2016-11-21 07:46:56
【问题描述】:

我最近在 CentOS 7 上安装了 PHP 7.0.8 (ZTS),配置如下:

--prefix=/usr/local/php7 \
--with-config-file-scan-dir=/usr/local/php7/etc/conf.d \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-opcache
--enable-dba \
--enable-ftp \
--with-gettext \
--with-gd \
--with-jpeg-dir \
--enable-mbstring \
--with-mcrypt \
--with-mhash \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-openssl \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-zlib \
--enable-zip \
--with-readline \
--with-curl \
--enable-shmop \
--enable-fpm \
--enable-maintainer-zts \
--enable-pthreads=shared \
--with-tsrm-pthreads \
--enable-fastcgi \
--with-fpm-user=www-data \
 --with-fpm-group=www-data"

我无法访问我的网站,因为当我尝试访问我的网站时出现以下 nginx 日志错误:

[error] 20609#20609: *8 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /adodb/drivers/adodb-mysql.inc.php:461

该网站在另一台配置了 Debian8、PHP7 的服务器上正常(与此处相同的配置)。

我已经安装了 MySQL 5.7 和 Nginx 1.10。我该如何纠正这个错误?

【问题讨论】:

标签: php mysql nginx centos


【解决方案1】:

mysql_connect function 在 5.5 版中已弃用,并在 7.0 版中完全删除。

您需要使用 mysqli 或 PDO。

【讨论】:

    【解决方案2】:

    要纠正错误,您基本上有两种选择

    1) 修改代码以删除对 mysql 扩展的引用(并改用 mysqli 或 PDO),或

    2) 安装支持 mysql 扩展的旧版本 PHP(PHP7 之前)


    跟进:

    如果您声称的是真的...mysql_ 函数在 PHP7 下运行,那么最可能的解释是有人安装了导出 mysql_ 函数的第三方模块/库。

    我相信构建这样一个库以提供向后兼容性已经做了一些工作。该库将使用较新的 PHP mysqli_ 函数与数据库进行交互,并为旧版应用程序提供(大部分)兼容的 mysql_ 函数。

    但这不是 PHP7 的一部分。那将是第三方添加。

    【讨论】:

    • 如果某个邪恶的混蛋让mysql_query 在 PHP 7 中工作,他们对我们所有人都是极大的伤害。它已经死了是有原因的,每个人都应该停止使用它。
    【解决方案3】:

    PHP 7 完全删除了 mysql_*。使用 PDO 或 mysqli

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2012-05-23
      • 1970-01-01
      • 2013-02-27
      • 2011-10-04
      • 2016-04-07
      相关资源
      最近更新 更多