首頁  >  文章  >  後端開發  >  win7 64位元Apache http server+PHP配置

win7 64位元Apache http server+PHP配置

WBOY
WBOY原創
2016-07-25 09:12:061093瀏覽

1、先下載apache http server(我本來是想在官網下載,但是找半天也沒找到,於是就在網上下了一個老版本的)我是在這個網址下載的:http://download .csdn.net/download/chang87812/7175961

下載PHP:同樣的我開始在官網下載了最新版的(網址:(http://windows.php.net/downloads/releases/)

但是後來配置好後又有問題。

問題是:httpd: Syntax error on line 129 of D:/PHP/server/httpd-2.2-x64/conf/httpd.conf: Cannot load D:/ApaServ/php/php5apache2_4.dll into server: xxd5bb26xbxx e9xa1xa3.

原因是:此檔案要跟版本對應,否則就無法載入。後來又出現一次,也是這個提示,只是換成了php5.4.8 在174行,「D:ApaServphpphp5apache2_4.dll」的啟動上下文產生失敗。 找不到從屬程序集 vcredist_x86.exe。後來解決方法是: 把 vcredist_x86.exe重新安裝了一次,這個是我在安裝apache之前安裝的,可能裡面的檔案被改寫了,所以找不到。我也是看了網路上:在類似C:Program FilesMicrosoft Visual Studio 8VCredi stDebug_NonRedistx86Microsoft.VC80.DebugCRT 下找到了下列檔案:
msvcm80d.dll msvcp80d.dll msvcr80d.dll Microsoftbug.80.dll拷貝到目標機器上,與執行程式相同資料夾或放到system32下,就可以正確運作了。
其他release版、MFC程式什麼的都是拷redist下對應資料夾下的檔案就可以了,資料夾後都有識別!

這個提示後,才想到的。 後來安裝php5.5的時候又出現這個錯誤提示,我開始是照自己的理解,安裝了VC++2010運行庫,但無論怎麼調試都是這個錯誤,後來我就從網上下載最高版本的VC++2012運作庫,一下就成功。 (此原因是我上網查到的,我並沒有實踐,我不想再裝VC++2012運行庫了!!!)

所以我又在網路上找到了一個舊版的PHP,下載網址:http://download.csdn.net/download/tonyyxm/5428271

二、安裝Apache

1、64位元的Apache不同於32位元打包成exe檔可直接安裝,先把httpd-2.2.19-win64解壓縮到E:/server/ apache- httpd-2.2.19-win64/(/* E為具體伺服器檔案所在磁碟機符*/)

2、以管理員身分執行 命令提示字元(開始-程式-附件),進入E:/server/apache-httpd-2.2.19-win64/

3、執行httpd -k install

這裡出現問題:failed to open the winNT service manager

解決:原來是軟體安裝時與windows7的「用戶帳戶控制」(UAC)衝突,只要先關閉UAC(控制面板-用戶帳戶和家庭安全-系統和安全-操作中心,裡面有“更改用戶帳戶控制設定”,改成從不通知,完成後會提示重啟,此時需要重啟一下)再安裝就沒問題了,安裝完後可以再修改回來。

4、修改httpd.conf,這裡跟32位元系統裡配置一樣

(1)修改ServerRoot "E:/server/httpd-2.2.19-win64/"

(2) 往下會看到apache開啟的功能模組如:#LoadModule vhost_alias_module modules/mod_vhost_alias.so

模組其後添加:

LoadModule php5_module "E:/Server/php-5.3.6-Win32-VC9-x64/php5apache2_2.dll"

PHPiniDir "E:/Server/php-5.3.6-Win32-VC9-x64/"

AddType application/x-httpd-php .html .htm .php

(3)繼續往下,找到行DocumentRoot "E:/Code/PHP/"設定網頁檔案目錄此行修改要與行# This should be changed to whatever you set DocumentRoot to後的目錄設定相對應

5、再次在 指令提示字元 執行httpd -k start 沒有錯誤即apache服務啟動成功

6、關閉Apache伺服器:執行httpd -k shutdown

三、配置PHP

1.如上提到,本人php目錄解壓縮到E:/Server/php-5.3.6-Win32-VC9-x64/即對應上步在Apache中設定的LoadModule位置

2、將php.ini-development修改成php.ini

3、開啟php.ini,找到extension_dir,修改其值為E:/Server/php-5.3.6-Win32-VC9-x64/ext/即php檔案所在目錄下/ext

4、找到擴充列表,;extension=php_gd2.dll、;extension=php_mysql.dll、 ;extension=php_mysqli.dll前的「;」去掉即為開啟該擴展,當然以上擴展為舉例之用,可根據功能雖求不同開啟對應擴充

5、(可選)date.timezone的值設為Asia/Shanghai即date.timezone =Asia/Shanghai

6、在E:/Code/PHP/下建立一test.php文件,內容為

  phpinfo();

?>

然後在瀏覽器網址列輸入http://localhost/test.php

上面的設定過程是別人的:我配好後出現以下兩個問題:

1、httpd: Could not reliably determine the server's fully qualified

解決:前言:apache雖然能運行,但是看見error.log中有httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168. x. x for ServerName這個錯誤。 ,想看看是否有其他佔用了80端口
開始--運行--cmd 進入命令提示符輸入netstat -ano 即可看到所有連接的PID 之後在任務管理器中找到這個PID所對應的程序如果任務管理器中沒有PID這一項,可以在任務管理器中選"查看"-"選擇列"
經常,我們在啟動應用的時候發現系統需要的端口被別的程序佔用,如何知道誰佔有了我們需要的端口,很多人都比較頭疼,下面就介紹一種非常簡單的方法,希望對大家有用
假如我們需要確定誰佔用了我們的80端口
1、Windows平台
在windows命令列視窗下執行:
C:>netstat -aon|findstr "80"
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448
看到了嗎,連接埠被進程編號為2448的進程佔用,繼續執行下面指令:
C:>tasklist|findstr "2448"
thread.exe 2016 Console 0 16,064 K
很清楚吧,thread佔用了你的連接埠,Kill it
如果第二步查不到,那就開任務管理器,看哪個進程是2448,然後殺之即可。
如果需要查看其他連接埠。把80 改掉即可
補充:原來出現這個錯誤原因(httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.1.111 for ServerName)是因為DNS沒配置好. 如果不想配置DNS , 就在httpd.conf , 在最前加入ServerName localhost:80 即可

2、「(OS 10013) 以一種存取權限不允許的方式做了一個存取套接字的嘗試。: make_sock: could not bind to address 0.0.0.0:80」

解決:改端口,打開.apacheconfhttpd.conf,將其中的所有80改為81,保存後重新啟動apache的,OK。

改完連接埠就要以下方網址存取:http://localhost:81/test.php

截圖:



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn