我们有一台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文件。
我无法找到解决问题的方法,或者至少找不到造成这种情况的原因。
如果有人能给我一些建议,我将不胜感激
提前致谢
答案 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的控制面板进行检查