iT邦幫忙

8

Windows 下快速安裝 Apache 2.4.1 + PHP 5.4.0

今天 PHP 5.4.0 剛釋出,分享一下手動安裝到 windows 的步驟。

雖然有一大堆三合一(Apache+MySQL+PHP)、多合一的套件可以直接下載來用,不過搭配的版本總是,不是這個太舊就是那個太舊,所以還是自己一個一個安裝比較快。

不過又不想要官方包好的安裝檔,不知道在系統留了什麼什麼東西,因此可以拿到免安裝檔,通常就用免安裝檔,如果要升級,直接砍掉舊的,換成新的即可。
安裝目錄:C:\LAMP (若不想裝到此處,以下步驟請自行更改)

一、下載 apache 2.4.1 windows 版,並解壓到 C:\LAMP。(出現 C:\LAMP\Apache24)
http://www.apachelounge.com/download/VC10/win32/bins/httpd-2.4.1-win32-VC10.zip

二、下載 php 5.4.0 windows 版,並解壓到 C:\LAMP\php-5.4。
http://windows.php.net/downloads/releases/php-5.4.0-Win32-VC9-x86.zip

三、下載 apache 之 php module,並解壓到 C:\LAMP\php-5.4
http://www.apachelounge.com/download/mods/php5apache2\_4.dll-php-5.4-win32.zip

四、編輯 C:\LAMP\Apache24\conf\httpd.conf

37c37
< ServerRoot "c:/Apache24"
---
> ServerRoot "C:/LAMP/Apache24"
72,73c72,73
< LoadModule access_compat_module modules/mod_access_compat.so
< LoadModule actions_module modules/mod_actions.so
---
> #LoadModule access_compat_module modules/mod_access_compat.so
> #LoadModule actions_module modules/mod_actions.so
76,77c76,77
< LoadModule asis_module modules/mod_asis.so
< LoadModule auth_basic_module modules/mod_auth_basic.so
---
> #LoadModule asis_module modules/mod_asis.so
> #LoadModule auth_basic_module modules/mod_auth_basic.so
80c80
< LoadModule authn_core_module modules/mod_authn_core.so
---
> #LoadModule authn_core_module modules/mod_authn_core.so
83c83
< LoadModule authn_file_module modules/mod_authn_file.so
---
> #LoadModule authn_file_module modules/mod_authn_file.so
89c89
< LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
---
> #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
92c92
< LoadModule authz_user_module modules/mod_authz_user.so
---
> #LoadModule authz_user_module modules/mod_authz_user.so
98c98
< LoadModule cgi_module modules/mod_cgi.so
---
> #LoadModule cgi_module modules/mod_cgi.so
105c105
< #LoadModule deflate_module modules/mod_deflate.so
---
> LoadModule deflate_module modules/mod_deflate.so
108,109c108,109
< LoadModule env_module modules/mod_env.so
< #LoadModule expires_module modules/mod_expires.so
---
> #LoadModule env_module modules/mod_env.so
> LoadModule expires_module modules/mod_expires.so
113c113
< #LoadModule headers_module modules/mod_headers.so
---
> LoadModule headers_module modules/mod_headers.so
118c118
< LoadModule include_module modules/mod_include.so
---
> #LoadModule include_module modules/mod_include.so
120c120
< LoadModule isapi_module modules/mod_isapi.so
---
> #LoadModule isapi_module modules/mod_isapi.so
133c133
< LoadModule negotiation_module modules/mod_negotiation.so
---
> #LoadModule negotiation_module modules/mod_negotiation.so
171a172,176
> LoadModule php5_module "C:/LAMP/php-5.4/php5apache2_4.dll"
> AddHandler application/x-httpd-php .php
> 
> # configure the path to php.ini
> PHPIniDir "C:/LAMP/php-5.4"
224a230,234
> <IfModule mod_allowmethods>
>     <Location />
>         AllowMethods GET POST OPTIONS
>     </Location>
> </IfModule>
237,238c247,248
< DocumentRoot "c:/Apache24/htdocs"
< <Directory "c:/Apache24/htdocs">
---
> DocumentRoot "c:/LAMP/Apache24/htdocs"
> <Directory "c:/LAMP/Apache24/htdocs">
251c261
<     Options Indexes FollowSymLinks
---
>     Options FollowSymLinks
271c281
<     DirectoryIndex index.html
---
>     DirectoryIndex index.php index.htm index.html
370,374c380,384
< <Directory "c:/Apache24/cgi-bin">
<     AllowOverride None
<     Options None
<     Require all granted
< </Directory>
---
> #<Directory "c:/Apache24/cgi-bin">
> #    AllowOverride None
> #    Options None
> #    Require all granted
> #</Directory>
469c479
< #Include conf/extra/httpd-mpm.conf
---
> Include conf/extra/httpd-mpm.conf
496c506
< #Include conf/extra/httpd-default.conf
---
> Include conf/extra/httpd-default.conf

五、複製一份 C:\LAMP\php-5.4\php.ini-development 為 C:\LAMP\php-5.4\php.ini (如果不想保留原始檔,直接改名也行。)。

六、編輯 C:\LAMP\php-5.4\php.ini

375c375
< expose_php = On
---
> expose_php = Off
461c461
< error_reporting = E_ALL
---
> error_reporting = E_ALL & ~E_NOTICE
730c730
< ; extension_dir = "ext"
---
> extension_dir = "C:\LAMP\php-5.4\ext"
736c736
< enable_dl = Off
---
> enable_dl = On
763c763
< ;cgi.fix_pathinfo=1
---
> cgi.fix_pathinfo=1
869c869
< ;extension=php_curl.dll
---
> extension=php_curl.dll
871,872c871,872
< ;extension=php_gd2.dll
< ;extension=php_gettext.dll
---
> extension=php_gd2.dll
> extension=php_gettext.dll
878c878,879
< ;extension=php_mbstring.dll
---
> extension=php_mbstring.dll
884c885
< ;extension=php_openssl.dll
---
> extension=php_openssl.dll
886c887
< ;extension=php_pdo_mysql.dll
---
> extension=php_pdo_mysql.dll
899,900c900,901
< ;extension=php_soap.dll
< ;extension=php_sockets.dll
---
> extension=php_soap.dll
> extension=php_sockets.dll
920c921
< ;date.timezone =
---
> date.timezone = "Asia/Taipei"

七、開命令列視窗,cd 到 C:\LAMP\Apache24\bin 目錄,下此命令將 apache 註冊為系統服務:
httpd -k install

八、在 C:\LAMP\Apache24\htdocs 目錄中,放一支 info.php 檔,內容如下:

<?php
phpinfo();
?>

九、以下列命令啟動 apache:『net start apache2.4』再開瀏覽器試連『http://127.0.0.1/info.php』

Apache 的模組只有掛上這些必要的模組:
mod_alias
mod_allowmethods
mod_authz_core
mod_authz_host
mod_autoindex
mod_deflate
mod_dir
mod_expires
mod_headers
mod_log_config
mod_mime
mod_setenvif
mod_php5
如果要加認證或SSL,請自行添加。PHP 模組則加掛
php_curl.dll
php_gd2.dll
php_gettext.dll
php_mbstring.dll
php_openssl.dll
php_pdo_mysql.dll
php_soap.dll
php_sockets.dll
其中 MySQL 與 MySQLi 都沒掛,而換新的 PDO_MySQL,有需要的人請自行加掛。


0
timloo
iT邦研究生 2 級 ‧ 2012-04-19 17:33:32

我的apache friends
XAMPP 1.7.7 是 [PHP: 5.3.8]。

wiseguy iT邦超人 1 級 ‧ 2012-04-19 17:47:14 檢舉

PHP: 5.3.8 都已經好舊了,5.3 版已經到 5.3.10 了。
等那些什麼幾合一的軟體更新會等到天荒地老,還不如自己動手各別裝最新版。

oct2005 iT邦新手 5 級 ‧ 2012-12-19 15:15:37 檢舉

版大,
請教您, 這個可以用在internet 做公開的伺服器, 讓其他的電腦在網址列輸入網址, 或ip, 就連上網站嗎?

0
oct2005
iT邦新手 5 級 ‧ 2012-12-19 15:19:22

版大,
請教您, 這個可以用在internet 做公開的伺服器, 讓其他的電腦在網址列輸入網址, 或ip, 就連上網站嗎?

(不好意思, 我剛註冊, 還沒摸清楚怎麼操作, 剛才留言好像留錯地方, 抱歉.)

wiseguy iT邦超人 1 級 ‧ 2012-12-19 15:46:49 檢舉

當然可以。只要你安裝的電腦可以讓 internet 上的電腦連到,不管是具有實際 IP 或是用 NAT 穿進內網都行。

0
oct2005
iT邦新手 5 級 ‧ 2012-12-19 15:37:08

wiseguy提到:
< ServerRoot "c:/Apache24"

ServerRoot "C:/LAMP/Apache24"

版大,
不好意思, 您可以把如何編輯httpd.conf 做詳細一點的說明嗎?
藍色字是什麼意思?
您不是把 apache 解壓縮到 c:\LAMP\apache24 嗎? 為什麼 httpd.conf 裏變成 c:/apache24?

wiseguy iT邦超人 1 級 ‧ 2012-12-19 15:51:31 檢舉

藍色字只是 IT幫的程式碼框做的字串標示,你只要照著修改就好了。
因為我是用 diff 語法寫出修改的地方。會使用 patch 的人把它存成 patch 檔就可以用 patch 迅速代換。如果你要手動修改,那就是把開頭是 < 的行,改成 > 的內容就是了。
Apache 是從 Linux/Unix 平台來的,所以 \ 對它而言是跳脫字元,不是目錄分隔。因此要在設定檔中寫成 / 它才看得懂。

oct2005 iT邦新手 5 級 ‧ 2012-12-21 10:04:41 檢舉

wise大,
感謝您指點.
我來試試看.

0
oct2005
iT邦新手 5 級 ‧ 2012-12-22 20:55:44

版大,
方便請教您其他問題嗎?
我有固定 ip, 我的網址也已指向我的 ip, 但架好 server 後, 網路上要連到我的 server 只能用 ip 連進來, 用網址就無法連進來, 請教您, 問題出在哪裏?
(我的電腦是windows7, server 是用 AppSer 套件安裝的.)

wiseguy iT邦超人 1 級 ‧ 2012-12-22 22:20:41 檢舉

你確定你的網域名,有指到正確的 IP 了嗎?
用 nslookup 命令查詢你的網域名是不是就是你的 IP。

oct2005 iT邦新手 5 級 ‧ 2012-12-23 08:26:27 檢舉

版大,
感謝您回應.
請問, 是要在命令提示字元下打nslookup 嗎?
若是, 我得到的回應是:
預設伺服器: hntp1.hinet.net
Adress: xxx.xx.xxx.xx
很奇怪, 兩者即不是我的網域名, 也不是我現在所設定的連線ip.
我的網域在亞太註冊, 網域和ip設定的畫面如連結中的圖, 麻煩版大您再幫我看看哪裏出問題, 好嗎? [/img]https://lh6.googleusercontent.com/-wl7oilffbUk/UNZPEXjKjWI/AAAAAAAAA1s/n46W9qVxP64/s720/phein.jpg[/img]

oct2005 iT邦新手 5 級 ‧ 2012-12-23 08:32:39 檢舉

那個連結不知有沒辦法正常開啓. 我再補充說明, 我設定好已幾天了, 也有打電話去和亞太的客服問過, 他們說已設定好了. 我設定的是:
Domain Name Server Ip Adress
dns1.xxx.com.tw xxx.xxx.xx.xx
dns.xxx.com.tw xxx.xxx.xx.xx

0
oct2005
iT邦新手 5 級 ‧ 2012-12-23 08:53:51

這次我打防火牆的 port80 打開(沒有持續開, 要試連結時才開. 剛才試 nslookup 時沒有開), 再試的結果如下:

220.134.42.43
伺服哭: hntp1.hinet.net
Adress: 168.95.192.1

名稱 220-134-42-43.HINET-IP.hinet.net
Adress:220.134.42.43

phein.com.tw
伺服哭: hntp1.hinet.net
Adress: 168.95.192.1

DNS request timed out.
timeout was 2 seconds.
.........
*** 對 hntpt.hinet.net 的要求逾時.

=======================================
所以, 意思是我的url沒和ip對應好嗎?
請教版大: 可能還有哪些地方我沒設定到?

wiseguy iT邦超人 1 級 ‧ 2012-12-23 10:24:22 檢舉

你設錯了
DNS 有兩種設定法,第一種是直接請 ISP 幫你解,你要直接設定你想解的名稱,比如
phein.com.tw 1.1.1.1
www.phein.com.tw 1.1.1.2
不過 ISP 通常只給設 3~5 個。

第二種是自己架設 DNS,也就是請 ISP 在接到有查詢 *.phein.com.tw 的時候,轉給你的 DNS 回答。你自己的 DNS 就要負責回應 www.phein.com.tw 是哪一台,email.phein.com.tw 是哪一台。這好處是可以設定無限多的網域名。

現在,你的問題出在,你似乎設定了第二種,但是卻沒有自己架設 DNS,所以查詢等到 timeout 了。

你可以把設定切換到第一種模式,把名稱 dns1.phein.com.tw 換成 phein.com.tw,dns.phein.com.tw 換成 www.phein.com.tw,再試試看,應該就可以連了。(phein.com.tw 或 www.phein.com.tw 都可以連)

oct2005 iT邦新手 5 級 ‧ 2012-12-23 12:31:14 檢舉

版大,
真的很感謝您願意花時間詳細回覆我的問題.
感恩! 感恩!

0
oct2005
iT邦新手 5 級 ‧ 2012-12-23 20:45:44

版大,
不好意思, 再來請教您.
我現在安裝的apache, 它都會自動安裝成 "localhost", 進到phpMyAdmin 後, 顯示的伺服器資訊是 "伺服器: localhost via TCP/IP", 有沒有辦法讓它安裝在我的ip下? 例如 "伺服器: 220.134.42.43 via TCP/IP?

wiseguy iT邦超人 1 級 ‧ 2012-12-23 22:00:43 檢舉

在 apache 的設定裡面加一條
ServerName 220.134.42.43
重新啟動 apache 就好了

oct2005 iT邦新手 5 級 ‧ 2012-12-24 08:32:53 檢舉

版大,
感謝您不吝指點.

0
oct2005
iT邦新手 5 級 ‧ 2012-12-24 12:02:58

版大, 不好意思, 再來打攪您.
很奇怪, 我怎麼試都不行.
我去Godaddy https://www.godaddy.com/ 由請了免費DNS, 然後在上面增加了一個 Domain, 一個sub Domain. 我填的明細如下:
Host Name: phein.com.tw Point to Ip: 220.134.42.43
Host Name: en.phein.com.tw Point to Ip: 220.134.42.43
結果:
www.phein.com.tw 無論如何都不能連, 而 en.phein.com.tw 卻可以連進來. 但卻是連到根目錄.
ping phein.com.tw 的結果則是:
伺服器: phein.com.tw
Adress: 220.134.42.43

DNS request timed out
...
*** 對 phein.com.tw 的要求逾時.

ping en.phein.com.tw 的結果也一樣.
您幫我看看問題出在哪裏好嗎?

您幫我看看

wiseguy iT邦超人 1 級 ‧ 2012-12-24 12:39:13 檢舉

你還是在用第二種方式。

oct2005 iT邦新手 5 級 ‧ 2012-12-24 13:59:28 檢舉

第二種方式我有試過, 不行.
現在改成給亞太電信託管 DNS, 正在等設定生效. (本來以為給他們託管要另外收費, 所以沒勾這個選項).

版大, 感謝您不厭其煩的回覆我一個又一個的問題.
謝謝.

0
oct2005
iT邦新手 5 級 ‧ 2012-12-24 14:47:46

版大, 不好意思, 我又來了.
很奇怪, 還是不行.
http://www.phein.com.tw 不能連結, 而http://en.phein.com.tw 可以連結.

ping phein.com.tw , 回應如下:
ping phein.com.tw [220.134.42.43]<使用32位元組的資料>:
回覆自 220.134.42.43 位元組=32 time<1ms TTL=128
.....

nslookup
預設伺服器 hntp1.hinet.net
Adress: 168.95.192.1

意思是我的預設伺服器要去改嗎?
請問要從哪裏去改?

wiseguy iT邦超人 1 級 ‧ 2012-12-24 18:11:51 檢舉

www 查不到,en 查得到,當然 www 不能連,en 可以連。你給亞太電信託管又是怎麼設定的?

oct2005 iT邦新手 5 級 ‧ 2012-12-24 20:23:47 檢舉

版大,
看您這個畫面, 我大概知道我錯在哪裏了.
我申請託管的畫面是:

我看上面說 "不設定主機名稱時,Host欄位請留空白,只填寫IP Address即可", 我想我domain name 是跟他們註冊的, 不必再設定主機名稱, 所以第一個空格我就留空白, 只填後面的ip. 難道就是錯在這裏嗎? 那個空格必須填上 "www" ? 我這就去加上 "www".

版大, 感謝您! 感謝您.

0
oct2005
iT邦新手 5 級 ‧ 2012-12-25 16:07:29

版大,
一定要特地來向您道謝, 感謝您這麼善心, 願意在網路上為素昧平生的路人甲提供協助.
在您耐心且細心的解說之下, 我得以終結多日來的網路連線摸索, 我的網址,ip,伺服器終於成功連結在一起了.

wiseguy iT邦超人 1 級 ‧ 2012-12-25 16:30:55 檢舉

不必客氣啦~ 能夠虛心請教,都能夠得到眾人的協助的。

0
Ken(Bigcandy)
iT邦大師 1 級 ‧ 2012-12-25 18:31:48

哇~大師傾力相助+後輩努力學習

這世界真美好

wiseguy iT邦超人 1 級 ‧ 2012-12-25 21:31:27 檢舉

大部份 IT 邦友們都是懷著一個助人的心,來這裡想跟大家分享一些工作心得與技巧,希望大家都能愉快地勝任工作,有個美好的 IT 人生。所以只要是肯學習、懷虛心的發問,我相信不管是誰都願意助一臂之力的。

oct2005 iT邦新手 5 級 ‧ 2013-01-08 09:59:41 檢舉

憑良心說, 版大真的是我在網路上所遇到, 最熱心, 最有耐心地在幫助生手的一位好人. 雖然其他網友也有不少人願意分享, 願意助人, 但像版大這麼有耐心的, 我還是第一次遇到.
ps. to bigcandy: "大師傾力相助+加後輩努力學習" ==> 如是! 如是! 只不過我這個 "後輩", 是個 "歐巴桑後輩". 哈哈.

正所謂
「鋼鐵的外表下包覆著柔軟的佛心」
拍手拍手拍手

0
oct2005
iT邦新手 5 級 ‧ 2013-01-09 14:59:51

糟糕,
版大, 對不起, 我想刪除我最後貼的那三則, 另外重新貼最新的狀況, 沒想到一刪, 把整個討論刪掉了. 連您的回覆也刪掉了.
對不起, sorry.

看更多先前的回應...收起先前的回應...
wiseguy iT邦超人 1 級 ‧ 2013-01-09 15:02:59 檢舉

你要把兩個站台的 DocumentRoot 寫出完整目錄,例如:
DocumentRoot "C:/AppServ/www/kiyui"
DocumentRoot "C:/AppServ/www/phein"
至於原本在 httpd.conf 裡面的那行可以不必理會,那是你 <VirtualHost> 裡面沒寫的時候才會去看的預設值。

oct2005 iT邦新手 5 級 ‧ 2013-01-09 15:29:03 檢舉

感謝版大
(sorry, 我貼出了下面那一則之後, 才看到您這一則回應.)

oct2005 iT邦新手 5 級 ‧ 2013-01-09 15:34:20 檢舉

DocumentRoot 後面的目錄, 我試過好幾個不同的樣子, 都不管用.
"C:/AppServ/www/kiyui" 我有試過, 不可以.
也就是下面這樣, 不可以. "糟糕!Internet Explorer 無法連線至 www.phein.com.tw"
<VirtualHost *>
ServerAdmin seroct@gmail.com
DocumentRoot " C:/AppServ/www/phein"
ServerName www.phein.com.tw
ErrorLog "logs/www.phein.com.tw.log"
CustomLog "logs/www.phein.com.tw.log" common
<Location />
Order deny,allow
</Location>
</VirtualHost>

<VirtualHost *>
ServerAdmin seroct@gmail.com
DocumentRoot "C:/AppServ/www/kiyui"
ServerName www.kiyui.com.tw
ErrorLog "logs/www.kiyui.com.tw.log"
CustomLog "logs/www.kiyui.com.tw.log" common
<Location />
Order deny,allow
</Location>
</VirtualHost>

oct2005 iT邦新手 5 級 ‧ 2013-01-09 16:11:38 檢舉

ps.
版大,
我現在是在windows7上面架網站. 等所有問題解決後, 我真正要架的的電腦是server2003的平台
請問在server2003架設, 設定過程會有不同嗎?
(那是恩人的電. 欠人恩情, 我撞破頭也必須去報恩, 幫恩人架好伺服器.)
汗

oct2005 iT邦新手 5 級 ‧ 2013-01-09 16:12:55 檢舉

ps2
sorry, 第二則留言請作廢.
(我無法刪除它)

oct2005 iT邦新手 5 級 ‧ 2013-01-09 18:32:45 檢舉

耶~~~
成功了
我把DocumentRoot 改成這樣 "/AppServ/www/phein", 就成了.
版大, 謝謝您唷

wiseguy iT邦超人 1 級 ‧ 2013-01-09 21:31:44 檢舉

oct2005提到:
DocumentRoot " C:/AppServ/www/phein"

你多打了一個空白在 " 跟 C 之間吧?
雖然省略 C: 也可以,不過省略的話,apache 就會當做是它安裝的磁碟。萬一你是把 wordpress 放在 D: 時就又不 OK 了。瞭解嗎?

oct2005 iT邦新手 5 級 ‧ 2013-01-10 09:01:28 檢舉

對哦! 安裝到D就不行了.
感謝網大提點.
不過我記得我並沒有多放一個空白.
我後來是乾脆把設定virtual host 那幾行字搬到httpd.conf, 然後把 httpd.conf 裏那行 "Include xxxx... " 那行前面的"#"再加回去. 然後把C:拿掉, 結果就瞎貓抓到死老鼠, 可以了.
現在變成我打 "http://www.phein.com.tw/phpMyAdmin" , 它沒辦法連結. 因為phpMyAdmin 在 C:/AppServ/www 之下. 天啊! 這是要怎麼辦?

oct2005 iT邦新手 5 級 ‧ 2013-01-10 11:18:53 檢舉

版大,
請問我是不是必須在phein 和 kiyui 之下各別安裝 phpMyAdmin?
一個apache 伺服器, 可以安裝兩個 phpMyAdmin 嗎?

oct2005 iT邦新手 5 級 ‧ 2013-01-10 11:42:24 檢舉

版大, 怎麼辦
我當初是用AppServ 自動安裝, 現在若要我另外安裝 phpMyAdmin, 我不知該如何安裝耶.
在網路上找了老半天, 也不知該下載哪一個.
哭

oct2005 iT邦新手 5 級 ‧ 2013-01-15 15:59:43 檢舉

很奇怪, 真正在朋友的電腦安裝時, 怎麼連都連在同一個目錄, 不然就是跳出一個訊息, 說 "....overlap...". 在這個問題上撞到頭破血流, 不知如何解.
剛才總算在網路上找到似乎可解的答案, 順便貼在這裏分享給跟我遇到同樣問題的人參考.
http://www.wretch.cc/blog/chuhsi0804/18904047
(我自己還沒試, 看到, 先po上來, 免得過些時給忘了)

0
y90393
iT邦新手 4 級 ‧ 2014-07-01 12:33:37

很久沒用windows裝apache了
原本在找apache載點
看到這篇
沒想有兩萬的觀看,滿厲害的
目前linux已經到apache 2.4+ PHP 6了
雖然windows很多包裝停滯2.2不前進卻很久了
但是wampserver已經開始用2.4一陣子了

wiseguy iT邦超人 1 級 ‧ 2014-07-02 17:11:46 檢舉

要更新版本的應該看這篇
http://ithelp.ithome.com.tw/question/10146835

我要留言

立即登入留言