我對Windows Server 2008 R2上的PHP有一個非常惱人的問題。 IIS和Apache在同一臺機器上運行(Apache嵌入了另一個產品,並且這不是我的選擇)。Apache不會加載PHP的MySQL擴展,但IIS不會
IIS配置爲能夠使用PHP的多個版本,並沒有在那裏的PHP版本中已安裝的Windows安裝程序(這樣的php.exe不在路徑存在)。
Apache使用PHP的一個特定版本(5.2.5線程安全的 - 我又不能改變這是一個第三方應用程序對這一版本編譯PHP擴展)。
如果我檢查我的Apache站點中的phpinfo(),它沒有MySQL的條目,即使在php.ini中啓用了php_mysql.dll並且它存在於\ ext目錄中。如果我(暫時)將這個版本的PHP(相同的目錄,相同的php.ini)添加到IIS並使用phpinfo()設置測試網站,它會正確列出MySQL。我知道這不僅是phpinfo的一個奇怪的問題,因爲我有一個基於MySQL的PHP網站在Apache中運行,它失敗了Call to undefined function mysql_connect()
有人建議我將libmysql.dll從PHP目錄複製到C:\ Windows \ System32但這沒有什麼區別。由於服務器上有多個PHP版本,我想可能是加載了錯誤版本的libmysql.dll,但PATH不包含任何包含libmysql.dll的目錄。
IIS和Apache正在尋找在完全相同的PHP安裝,php.ini中,和ext目錄,但只有IIS可以加載MySQL擴展。 Apache是默認的系統帳戶,因爲它看起來像系統有權訪問所有的DLL。
Apache日誌沒有說明任何DLL無法加載。我在事件日誌中記錄了PHP錯誤,但沒有任何關於這些擴展的報告。
解決這個問題谷歌搜索後,我發現其他突然發生的問題在PHP中的Windows服務器,但通常分辨率上 - 重建php.ini文件,重新啓動IIS,重新啓動服務器 - 並沒有幫助。
任何關於下一步的建議都非常感謝!
您是否檢查到c:\%php_5.2.5_install_path $ \中的dll被複制到C:\ Windows \ System32?例如'libmysql.dll'或'libmhash.dll'。我知道這是Apache + PHP所必需的,不確定是否需要IIS + PHP – JScoobyCed 2012-03-27 02:06:01
@JScoobyCed這聽起來很有希望,但我也有在IIS中工作的PHP 5.3.10,它目前在連接到MySQL時沒有問題。是否存在將5.2.5 DLL複製到System32會對5.3.10產生負面影響的風險? – tomfumb 2012-03-27 16:25:01
如果System32中已經存在5.3.10 DLL,是的,可能會影響PHP 5.3.10 – JScoobyCed 2012-03-28 01:22:36