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

yipeiwu_com5年前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 函数,内容如下:
复制代码 代码如下:

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
复制代码 代码如下:

<?
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+mysql实现数据库随机重排实例

本文实例实现了php+mysql数据库随机重排的方法,可将表中的所有数据随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能。 主要实现代码如下: 复制代码 代码如下:&...

php+mysql+jquery实现日历签到功能

php+mysql+jquery实现日历签到功能

在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动。这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤。 1.日历签到样式: 2.本...

php导入excel文件到mysql数据库的方法

本文实例讲述了php导入excel文件到mysql数据库的方法。分享给大家供大家参考。具体分析如下: php导入excel文件入mysql数据库我们是需一借助一个phpexcel类文件了...

php mysql procedure实现获取多个结果集的方法【基于thinkPHP】

本文实例讲述了php mysql procedure实现获取多个结果集的方法。分享给大家供大家参考,具体如下: protected function getRs($id) {...

PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID

前言 最近在工作中又遇到了这个问题,PHP中如何获得刚插入数据的ID(或当前发布文章的ID)呢?觉得有必要整理下详细的解决方法,方便自己也给有需要的朋友们提供以帮助,那么话不多说了,来看...