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


Posted in PHP onDecember 29, 2010

正好今天朋友 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 相关文章推荐
php mysql数据库操作类
Jun 04 PHP
基于Zookeeper的使用详解
May 02 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 #PHP
php防攻击代码升级版
Dec 29 #PHP
php 传值赋值与引用赋值的区别
Dec 29 #PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 #PHP
服务器web工具 php环境下
Dec 29 #PHP
php cookie的操作实现代码(登录)
Dec 29 #PHP
PHP 图片文件上传实现代码
Dec 29 #PHP
You might like
php中stdClass的用法分析
2015/02/27 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
Yii快速入门经典教程
2015/12/28 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
js加强的经典分页实例
2013/03/15 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
python提取xml里面的链接源码详解
2019/10/15 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
Python 代码调试技巧示例代码
2020/08/11 Python
总经理岗位职责
2013/11/09 职场文书
《学棋》教后反思
2014/04/14 职场文书
团队口号大全
2014/06/06 职场文书
升学宴学生答谢词
2015/01/05 职场文书
毕业生自荐信范文
2015/03/05 职场文书
小学大队长竞选稿
2015/11/20 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
详解MySQL中的主键与事务
2021/05/27 MySQL
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android