解決PHP在DOS命令行下卻無法鏈接MySQL的技術(shù)筆記
更新時間:2010年12月29日 23:49:26 作者:
前段時間,由于要用 php 進(jìn)行 Shell 編程時,碰到了 PHP 在 WEB 下可以連接 MySQL 而在 DOS COMMAND 命令行下卻連接失敗的問題。
正好今天朋友 xjb 也碰到了這個問題,所以寫了這篇筆記,將此問題的描述以及解決記錄下。
問題描述:用 web 方式, 可以鏈接 mysql, 但是在命令行下, 卻提示:
Fatal Error: undefined function mysql_connect()
環(huán)境: Windows 2003, PHP 5.2.0, MYSQL 5.0, Apache 2.0
在 php.ini 中, 已經(jīng)將 php_mysql.dll 的模塊選項給打開了;測試的腳本也很簡單,就一個 mysql_conect 函數(shù),內(nèi)容如下:
php.ini:
extension=php_mysql.dll
測試腳本 test.php 內(nèi)容如下:
text.php
<?
if ( !mysql_connect(DBHOST, DBUSER,DBPWD) )
{
echo "連接失敗!";
exit;
}
echo "連接成功!t";
?>
用 web 方式調(diào)用 http://localhost/test.php, 執(zhí)行正常, 顯示"連接成功".
但用 dos command 命令行的方式調(diào)用 d:/php/php.exe test.php 卻顯示連接失敗, 錯誤信息為: Fatal Error: undefined function mysql_connect()
很顯然, 在 dos command 命令行的環(huán)境下,mysql 的模塊沒有被調(diào)用。方法弄盡, 仍無法解決. 百思不得其解. 后來, 用寫了個腳本, 看看 php 的配置, 在兩個環(huán)境下有什么不同:
test.php
<?
echo phpinfo();
?>
仔細(xì)查看兩個環(huán)境下 phpinfo() 輸入的 php 配置信息,終于發(fā)現(xiàn)了問題所在:
Web 方式 http://localhost/test.php 方式調(diào)用時, 其 Configuration File (php.ini) Path 顯示為 C:WINDOWSphp.ini。
DOS COMMAND 命令行方式 d:/php/php.exe test.php 調(diào)用時, 其 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,問題解決.
總結(jié):在 windows 下安裝 php 時, 為了避免配置文件混亂,將安裝目錄下的 php.ini 復(fù)制到 windows 目錄下之后,應(yīng)該將原來安裝目錄下的 php.ini 文件重命名或刪除,以免造成在不同環(huán)境下執(zhí)行時,查找配置文件不一致的情況發(fā)生。問題發(fā)生的原因一般都是非常非常簡單,但查找、排除問題的過程,卻是相當(dāng)?shù)臒┤恕?
問題描述:用 web 方式, 可以鏈接 mysql, 但是在命令行下, 卻提示:
Fatal Error: undefined function mysql_connect()
環(huán)境: Windows 2003, PHP 5.2.0, MYSQL 5.0, Apache 2.0
在 php.ini 中, 已經(jīng)將 php_mysql.dll 的模塊選項給打開了;測試的腳本也很簡單,就一個 mysql_conect 函數(shù),內(nèi)容如下:
復(fù)制代碼 代碼如下:
php.ini:
extension=php_mysql.dll
測試腳本 test.php 內(nèi)容如下:
text.php
<?
if ( !mysql_connect(DBHOST, DBUSER,DBPWD) )
{
echo "連接失敗!";
exit;
}
echo "連接成功!t";
?>
用 web 方式調(diào)用 http://localhost/test.php, 執(zhí)行正常, 顯示"連接成功".
但用 dos command 命令行的方式調(diào)用 d:/php/php.exe test.php 卻顯示連接失敗, 錯誤信息為: Fatal Error: undefined function mysql_connect()
很顯然, 在 dos command 命令行的環(huán)境下,mysql 的模塊沒有被調(diào)用。方法弄盡, 仍無法解決. 百思不得其解. 后來, 用寫了個腳本, 看看 php 的配置, 在兩個環(huán)境下有什么不同:
test.php
復(fù)制代碼 代碼如下:
<?
echo phpinfo();
?>
仔細(xì)查看兩個環(huán)境下 phpinfo() 輸入的 php 配置信息,終于發(fā)現(xiàn)了問題所在:
Web 方式 http://localhost/test.php 方式調(diào)用時, 其 Configuration File (php.ini) Path 顯示為 C:WINDOWSphp.ini。
DOS COMMAND 命令行方式 d:/php/php.exe test.php 調(diào)用時, 其 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,問題解決.
總結(jié):在 windows 下安裝 php 時, 為了避免配置文件混亂,將安裝目錄下的 php.ini 復(fù)制到 windows 目錄下之后,應(yīng)該將原來安裝目錄下的 php.ini 文件重命名或刪除,以免造成在不同環(huán)境下執(zhí)行時,查找配置文件不一致的情況發(fā)生。問題發(fā)生的原因一般都是非常非常簡單,但查找、排除問題的過程,卻是相當(dāng)?shù)臒┤恕?
相關(guān)文章
PHP中ini_set和ini_get函數(shù)的用法小結(jié)
本篇文章主要是對PHP中ini_set和ini_get函數(shù)的用法進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02php checkdate、getdate等日期時間函數(shù)操作詳解
PHP的日期時間函數(shù)date()中介紹了PHP日期時間函數(shù)的簡單用法,這類將介紹更多的函數(shù)來豐富我們的應(yīng)用。2010-03-03PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析
這篇文章主要介紹了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析,本文用代碼實例講解了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù),需要的朋友可以參考下2014-10-10PHP下通過exec獲得計算機(jī)的唯一標(biāo)識[CPU,網(wǎng)卡 MAC地址]
PHP下通過exec獲得計算機(jī)的唯一標(biāo)識的代碼,可獲得CPU,網(wǎng)卡 MAC地址信息。2011-06-06PHP在獲取指定目錄下的目錄,在獲取的目錄下面再創(chuàng)建文件,多平臺
PHP在獲取指定目錄下的目錄,在獲取的目錄下面再創(chuàng)建文件,多平臺,需要的朋友可以參考下。2011-08-08