解决PHP在DOS命令行下却无法链接MySQL的技术笔记

前端之家收集整理的这篇文章主要介绍了解决PHP在DOS命令行下却无法链接MySQL的技术笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正好今天朋友 xjb 也碰到了这个问题,所以写了这篇笔记,将此问题的描述以及解决记录下。
问题描述:用 web 方式,可以链接 MysqL,但是在命令行下,却提示:
  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 函数内容如下:
<div class="codetitle"><a style="CURSOR: pointer" data="52631" class="copybut" id="copybut52631" onclick="doCopy('code52631')"> 代码如下:

<div class="codebody" id="code52631">
PHP.ini:
extension=PHP_MysqL.dll
测试脚本 test.PHP 内容如下:
text.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 的配置,在两个环境下有什么不同:
test.PHP
<div class="codetitle"><a style="CURSOR: pointer" data="44345" class="copybut" id="copybut44345" onclick="doCopy('code44345')"> 代码如下:
<div class="codebody" id="code44345">
<?
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,问题解决
  总结:在 windows 下安装 PHP 时, 为了避免配置文件混乱,将安装目录下的 PHP.ini 复制到 windows 目录下之后,应该将原来安装目录下的 PHP.ini 文件重命名删除,以免造成在不同环境下执行时,查找配置文件不一致的情况发生。问题发生的原因一般都是非常非常简单,但查找、排除问题的过程,却是相当的烦人。

猜你在找的PHP相关文章