【问题标题】:Windows + PHP 5.3.6 - Undefined function, mysql_connect?Windows + PHP 5.3.6 - 未定义函数,mysql_connect?
【发布时间】: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 将被弃用”是正确的做法;)

标签: php mysql apache mysqli


【解决方案1】:

事实证明,由于 Program Files (x86) 中的括号没有用引号引起来,因此配置文件中存在解析错误。 Charles 建议从命令行启动 PHP!

【讨论】:

    【解决方案2】:

    最常见的错误(尤其是在 Windows 上)是忘记在 php.ini 文件中设置“extension_dir”的路径。 PHP 默认假定 C:\php\ext,而许多人更喜欢将 PHP 解压缩到 C:\Program Files\PHP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2016-04-06
      • 1970-01-01
      • 2012-05-26
      • 2016-03-15
      相关资源
      最近更新 更多