時隔一年,再次安裝apache+php,裝完對php又有了新的認識。
去年安裝的時候寫過筆記:http://blog.csdn.net/monkey7777/article/details/9261325。
關於詳細配置課參看上面筆記。
現在寫下安裝過程中可能出現出現的幾個問題:
1.啟動apache遇到錯誤:httpd: Could not reliably determine the server's fully qualified domain name
這個問題我的理解是:連接埠問題。(連接埠佔用,連接埠衝突類似問題)
一種辦法是在apache的httpd.conf檔案中尋找“Listen”修改其連接埠值。
另一種辦法是尋找當前佔用連接埠的進程並殺死該進程。
尋找連接埠使用方式:
netstat -anofindstr "8080"
查看使用該連接埠的進程:(“x”為進程號)
tasklistfindstr "x"
結束某個進程:(“x”為進程號)
tskill "x"
鑒於我的tomcat用的連接埠8088,iis用的8080,於是我把Listen值改成了8090解決了問題。
如果用上面兩種方法都沒有解決(應該是DNS配置的問題),可以在httpd.conf中添加一句話(添加“ServerName localhost:8090”,位置如下):
#ServerName www.example.com:80ServerName localhost:80
2.啟動Apache時提示錯誤“Cannot load php5apache2_4.dll into server”
我下載的是最新版本的php(php-5.5.15-Win32-VC11-x64)。
在httpd.conf中有這麼一句:(報錯的時候顯示這一行錯誤)
LoadModule php5_module "c:\php\php5apache2_4.dll"
看到這個問題第一個想法是用php5apache2_2.dll替換php5apache2_4.dll,實踐證明失敗了。
網上搜了一下,原因可以理解為:版本問題。
細心點會發現php名字上會有VC9,VC11的標識。代表著該php應該運行在什麼樣的VC編譯環境下。(畢竟這個東西實用C++寫的嘛...)
我的理解是帶有VC9的應該運行在裝有VC2008運行庫下,VC11的應該在裝有VC2012運行庫下。可是我安裝了2012的運行庫之後發現還是不能正確運行。用了亮神給的php-5.3.6-Win32-VC9-x64(裡面的是php5apache2_2.dll),配置好後運行ok。
http://windows.php.net/官網上有如是說:
VC9 and VC11More recent versions of PHP are built with VC9 or VC11 (Visual Studio 2008 and 2012 compiler respectively) and include improvements in performance and stability.The VC9 builds require you to have the Visual C++ Redistributable for Visual Studio 2008 SP1 x86 or x64 installed.The VC11 builds require to have the Visual C++ Redistributable for Visual Studio 2012 x86 or x64 installed.
意思就是VC9和VC11各自需要特定的編譯環境。VC9 --> VC2008,VC11 --> VC2012。
網上看到這樣一種說法。“由於apache版本的不同,對應的“php5apache2.dll”也不同” 。意思是apache和php版本有相互配套的關係。
即:
Apache2.2 對應 php5apache2_2.dllApache2.1 對應 php5apache2.dllApache1 對應 php5apache.dll
但我覺得應該沒有對應關係,畢竟官網上沒說嘛。
可是我裝了VC2012運行庫後VC11版本的php還不好用,我只能懷疑我VC2012運行庫沒裝好或者真的存在某種對應關係了。
如果環境沒問題,這個對應關係不妨一試。