在php.ini中启用了mysql,但我仍然调用未定义的函数mysql_connect()

时间:2014-01-13 09:24:57

标签: php mysql

我们有一台Windows 2008服务器,今天早上来到办公室时,我们看到mysql无法正常工作

我们收到一个简单连接函数的错误

Fatal error: Call to undefined function mysql_connect() 

但奇怪的是在php.ini文件中启用了mysql扩展。

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_pdo_mysql.dll

根据phpinfo(),php使用C:\PHP中的ini文件,并且ext文件夹中存在DLL文件。

我无法找到解决问题的方法,或者至少找不到造成这种情况的原因。

如果有人能给我一些建议,我将不胜感激

提前致谢

2 个答案:

答案 0 :(得分:3)

出于调试目的尝试

if ( !function_exists('mysql_connect') ) {
    echo '<pre>mysql extension loaded: ', extension_loaded('mysql') ? 'yes':'no', "\r\n";
    $cf = get_cfg_var('cfg_file_path');
    echo 'ini file: ', $cf, "\r\n";
    if ( !$cf || !file_exists($cf) ) {
        echo "no config file\r\n";
    }
    else {
        echo "mysql config options:\r\n";
        $mc = array_filter( file($cf), function($e) { return false!==stripos($e, 'mysql') && false!==stripos($e, 'extension'); });
        echo join("", $mc);
    }
    die('no function mysql_connect</pre>');
}

输出应该是

<pre>mysql extension loaded: no
ini file: C:\Develop\php\php.ini
mysql config options:
;extension=php_mysql.dll
;extension=php_mysqli.dll
extension=php_pdo_mysql.dll
no function mysql_connect</pre>

表示行extension=php_mysql.dll已被注释掉(在我的php.ini中)。

如果此脚本显示php_mysql.dll确实已加载,请尝试增加php和您的Web服务器的日志级别并检查日志文件。也许windows无法加载dll,因为它依赖于另一个不存在的dll(正确的版本)了。例如。 “my”ext目录中的php_mysql.dll依赖于MSVCR110.DLL,因为我安装了Visual Studio,否则将需要安装Visual Studio 2012可再发行组件。像Dependency Walker这样的工具可以显示运行应用程序和/或dll所需的dll。

或者可能是php_mysql.dll实现了与php核心不同的API版本。例如。如果您安装了PHP 5.4但php_mysql.dll用于php 5.1,您将在日志文件中看到API魔术密钥错误。

答案 1 :(得分:-1)

重新启动您的WAMP或XAMPP服务器。您可以使用XAMPP或WAMP的控制面板进行检查