在 windows 下安装 php 时,为了避免配置文件混乱,将安装目录下的 php.ini 复制到 windows 目录下之后,应该将原来安装目录下的 php.ini 文件重命名或删除,以免造成在不同环境下执行时,查找配置文件不一致的情况发生.
fatal error: undefined function mysql_connect()
环境:windows 2003, php 5.2.0, mysql 5.0, apache 2.0
在 php.ini 中,已经将 php_mysql.dll 的模块选项给打开了,测试的脚本也很简单,就一个 mysql_conect 函数,内容如下:
php.ini:extension=php_mysql.dll
测试脚本 test.php 内容如下:
- <?php
- if ( !mysql_connect(dbhost, dbuser,dbpwd) )
- {
- echo "连接失败!";
- exit;
- }
- echo "连接成功!t";
- ?>
用 web 方式调用 http://localhost/test.php,执行正常,显示"连接成功".
但用 dos command 命令行的方式调用 d:/php/php.exe test.php 却显示连接失败,错误信息为:fatal error:undefined function mysql_connect()
很显然,在 dos command 命令行的环境下,mysql 的模块没有被调用,方法弄尽,仍无法解决,百思不得其解,后来,用写了个脚本,看看 php 的配置,在两个环境下有什么不同,代码如下:
<?php echo phpinfo();?>
仔细查看两个环境下 phpinfo() 输入的 php 配置信息,终于发现了问题所在:
web 方式 http://localhost/test.php 方式调用时, 其 configuration file (php.ini) path 显示为 c:windowsphp.ini。
dos command 命令行方式 d:/php/php.exe test.php 调用时, 其 configuration file (php.ini) path 为 d:phpphp.ini。
而在 c:windows 和 d:php 目录下,都存在一个 php.ini 文件,d:php 目录下的 php.ini 没有将 extension=php_mysql.dll 模块打开,于是将 d:phpphp.ini 删除,只保留 c:windowsphp.ini,问题解决. |