【发布时间】:2011-10-25 23:27:23
【问题描述】:
我们有一个全新的网络服务器,我们在其上安装了 Apache,然后是 PHP,将其指向 Apache 的 conf 目录,并安装所有可选部分。我现在正试图让 MySQL 连接,但它拒绝了。我的 PHP.ini 将模块列为未注释,它位于我的扩展目录设置的目录中,但我只是不断得到:
Fatal error: Call to undefined function mysql_connect() in C:\apache\htdocs\index.php on line 8
我安装了:
PHP: VC9 x86 Thread Safe (2011-Mar-22 13:27:32)
Apache: Apache 2.2
MySQL: Windows (x86, 64-bit), MSI Installer
Windows: Windows 7
我已将 PHP 添加到我的 PATH 变量中,并有 phpinfo() 输出,但我不确定要查找什么。我读过的所有文档似乎都表明 PHP 5.3.x+ MySQL / MySQLi 支持应该默认启用。
phpinfo的mysqlnd信息:
mysqlnd
mysqlnd enabled
Version mysqlnd 5.0.8-dev - 20102224 - $Revision: 308673 $
Compression supported
SSL supported
Command buffer size 4096
Read buffer size 32768
Read timeout 31536000
Collecting statistics Yes
Collecting memory statistics No
Tracing n/a
phpinfo的配置命令信息:
Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--disable-isapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=D:\php-sdk\oracle\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet" "--with-mcrypt=static"
phpinfo 加载的配置文件信息:
Configuration File (php.ini) Path C:\Windows
Loaded Configuration File C:\Program Files (x86)\PHP\php.ini
在里面,朝向底部:
[dba]
;dba.default_handler=
; Local Variables:
; tab-width: 4
; End:
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_FILEINFO]
extension=php_fileinfo.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_INTL]
extension=php_intl.dll
[PHP_LDAP]
extension=php_ldap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_OPENSSL]
extension=php_openssl.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE]
extension=php_sqlite.dll
[PHP_SQLITE3]
extension=php_sqlite3.dll
[PHP_TIDY]
extension=php_tidy.dll
[PHP_XMLRPC]
extension=php_xmlrpc.dll
[PHP_EXIF]
extension=php_exif.dll
编辑:所以我玩弄了我的 .ini 文件,将其删除,将垃圾放入其中,而 phpinfo() 保留相同的信息。所以我实际上看起来很努力,我将我的 .ini 设置为 upload_max_filesize 为 200M,但 phpinfo 显示为 2M。是什么赋予了? phpinfo 试图告诉我的确切文件是 .ini。
【问题讨论】:
-
检查你是否在正确的 php.ini 中取消了扩展的注释。但是鉴于有efforts to deprecate ext/mysql,你真的不应该再使用它了。请改用 PDO 或 mysqli。
-
没有努力弃用 ext/mysql。只是努力鼓励人们迁移到更新的扩展程序,因为它们提供更多功能并且得到更好的支持。
-
@Mchl 教育人们是这一努力的第一步。目标是从长远来看弃用它,因为没有核心开发人员愿意再维护它,而且积极的开发已经停止了很长一段时间。
-
时髦的
[PHP_*]ini 标头从何而来?请尝试删除它们。它们不存在于我见过的任何(完全工作的)php.ini 文件中...... -
毫无疑问。我只是不认为说“ext/mysql 将被弃用”是正确的做法;)