一般情況下,都能實作顯示phpinfo()的頁面。就從能夠顯示該頁面之後出現的問題說起
php的問題都會顯示在phpinfo()頁面上
首先查看自己的php.ini的路徑是否正確
Q:我已經配置了php.ini文件,但重新啟動伺服器後為什麼沒有任何效果?
A:這個問題主要有這幾種情況。
第一個原因是因為系統所讀取的php.ini檔案與你當時修改的php.ini檔案不一致造成的1、可以透過phpinfo()的Configuration File (php.ini) Path選項來檢視目前PHP伺服器讀取的是哪一個php.ini
2、 如果你要更改php.ini的檔案存取位置,可參考php.ini的搜尋順序,如下所示:
a) SAPI 模組所指定的位置(Apache 2 中的PHPIniDir 指令,CGI 和CLI 中的-c 命令列選項,NSAPI 中的php_ini 參數,THTTPD 中的PHP_INI_PATH 環境變數)
b) HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath(Windows 註冊表位置)
c) PHPRC 環境變數d) 目前工作目錄(對於CLI)
e) web 伺服器目錄(對於SAPI 模組)或PHP 所在目錄(Windows 下其它情況)
f) Windows 目錄(C:windows 或C:winnt),或--with-config-file-path 編譯時選項指定的位置3、 一般做法:透過設定PHPRC 環境變量,
a) 操作:右鍵點選我的電腦->屬性->進階->環境變數b) 在系統變數下新建一個「變數名為PHPRC ,變數值為你的php.ini檔案所地檔案路徑」的環境變量
第二個原因是:PHP沒有找到對應的擴充庫1、 查看PHP找到的擴充庫位置:在phpinfo()的extension_dir選項可以看到2、 在php.ini更改extension_dir檔
第三個原因:沒有完全重啟IIS
1、 對php.ini的修改必須完全重啟IIS才能運作,而不能只是重新啟動目前網站。
2、 進入cmd,停止伺服器:net stop iisadmin;啟動伺服器:net start w3svc
Q:我的PHP怎麼沒辦法啟動MySql擴充庫
A:在PHP5.0以上版本,MySQL 預設未啟用,因此需要咱們進行手動啟動。
1. 在PHP運行MySql,必須在php.ini 中啟動php_mysql.dll 動態連線庫,另外還需要存取MySQL 用戶端連線庫即libmysql.dll檔案2、可以透過php.ini中的extension啟動php_mysql.dll 動態連接函式庫;而libmysql.dll檔案必須放在Windows 的系統路徑PATH才能訪問,可以透過把libmysql.dll複製到system32目錄下,也可以在PATH環境變數中新增一個路徑。
3. 建議做法:透過設定PATH,方便以後的php升級,在系統環境變數中的PATH後增加「libmysql.dll」所在的資料夾即可。記得透過「;」號隔開4、 [案例]最近,伺服器總是找不到MySql擴充庫,導致程式無法運作。因此,把所有檔案刪除後重新配置PHP伺服器。但最後在安裝MySql的時候,卻始終無法啟動MySql擴充庫。
在phpinfo()中找到的資訊如下:
PATH:c:php
PHPRC:C:php
extension_dir:c:phpext
另外,我測試了將其它的庫激活,如msql、gd2、xml,在phpinfo()都可以正常顯示證明PHP能找到php_mysql.dll 動態連接庫,而MySql的運行的另一個條件是能夠訊問MySQL 客戶端連接庫即libmysql.dll文件,看來問題就在這裡了。
我對C盤搜尋libmysql.dll文件,發現在system32和php資料夾各有一個文件,做好備份後,我嘗試刪除system32的libmysql.dll文件,發現被鎖死,無法刪除,卻可以重新命名,我隨便修改了名稱,再重新啟動IIS,伺服器運作正常。
再補充一點:如果Configuration File (php.ini) Path 顯示為C:Windows
就表示,php.ini檔案沒有讀取到。
另外,我發現,在用IIS整合php時,有兩種方式:ISAPI與CGI模式
這兩種方式,我們都可以看到phpinfo頁面
但是使用ISAPI模式,無法讀取環境變量,所以透過環境變量PHPRC設置的php.ini路徑無法找到。
使用CGI就可以,這樣就不必把好多檔案拷到系統檔案下