windows下php apache 安裝的幾個問題

時隔一年,再次安裝apache+php,裝完對php又有瞭新的認識。

去年安裝的時候寫過筆記:https://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 -ano|findstr "8080"

查看使用該端口的進程:(“x”為進程號)

tasklist|findstr "x"

結束某個進程:(“x”為進程號)

tskill "x"

鑒於我的tomcat用的端口8088,iis用的8080,於是我把Listen值改成瞭8090解決瞭問題。

如果用上面兩種方法都沒有解決(應該是DNS配置的問題),可以在httpd.conf中添加一句話(添加“ServerName localhost:8090”,位置如下):

#ServerName www.example.com:80
ServerName 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。

https://windows.php.net/官網上有如是說:

VC9 and VC11
More 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.dll
Apache2.1 對應 php5apache2.dll
Apache1 對應 php5apache.dll

但我覺得應該沒有對應關系,畢竟官網上沒說嘛。

可是我裝瞭VC2012運行庫後VC11版本的php還不好用,我隻能懷疑我VC2012運行庫沒裝好或者真的存在某種對應關系瞭。

如果環境沒問題,這個對應關系不妨一試。

發佈留言