解决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 相关文章推荐
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
PHP 解决session死锁的方法
Jun 20 PHP
php去除HTML标签实例
Nov 06 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
Yii框架安装简明教程
May 15 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
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
JS实现div居中示例
2014/04/17 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
Array.filter中如何正确使用Async
2020/11/04 Javascript
教你安装python Django(图文)
2013/11/04 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
Python基于requests库爬取网站信息
2020/03/02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
浅谈react路由传参的几种方式
2021/03/23 Javascript
统计岗位职责
2014/02/21 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
建筑工地大门标语
2014/06/18 职场文书
教师师德师风整改措施
2014/10/24 职场文书
安全生产标语口号
2015/12/26 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Python  lambda匿名函数和三元运算符
2022/04/19 Python