Windows 上安裝 Apache 與 PHP
雖然現在有很多整合了 Apache + PHP 的安裝包,安裝起來也的確很方便,但我還是比較習慣一項一項個別安裝。
檔案準備
Apache (Win32, VC11)
https://www.apachelounge.com/download/PHP (x86, Thread Safe, VC11)
http://windows.php.net/download/Visual Studio 2012 Update 4 的 Visual C++ 可轉散發套件 (x86)
http://www.microsoft.com/zh-tw/download/details.aspx?id=30679
這邊選擇了 VC11 編譯的 x86 版本,VC11 只能安裝在 Windows Vista Service Pack 2 (含)以上的作業系統,如果你使用 Windows XP 可以選擇 Apache (VC10) 及 PHP (VC9) 的版本。
安裝 Visual C++ 可轉散發套件
根據選擇的 Apache 及 PHP 編譯版本,安裝相對應的 Visual C++ 可轉散發套件。
- VC9 : Visual C++ 2008
- VC10 : Visual C++ 2010
- VC11 : Visual C++ 2012
安裝 Apache
解壓縮 Apache
解壓縮下載回來的 Apache,其中 Apache24 資料夾 (24 代表 2.4.x 版) 為 Apache 根目錄,將該目錄重新命名為 Apache 並放在 C:\Program Files (x86)\Apache。
設定 Apache
用文字編輯器開啟位於Apache根目錄\conf\httpd.conf
的設定檔,httpd.conf 有很多設定,用搜尋的方式找到要更改的設定。
# Apache 根目錄
ServerRoot "C:/Program Files (x86)/Apache"
# 監聽 port
Listen 80
# 伺服器用來識別自己,如果沒有網域名稱可以使用 IP
ServerName 網域名稱或IP:80
# DocumentRoot : 網站根目錄
# <Directory "目錄"></Directory> : 目錄設定
# 正式環境中建議將 Options 的 Indexes 移除,避免列出網站的目錄及檔案
DocumentRoot "C:/Program Files (x86)/Apache/htdocs"
<Directory "C:/Program Files (x86)/Apache/htdocs">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# 錯誤記錄檔的路徑,預設會將所有記錄寫入到同一個檔案,時間久了檔案會變很大
# 調用 rotatelogs.exe 將記錄檔以天為單位做分割
# 路徑若有空格用8.3檔名處理
ErrorLog "|bin/rotatelogs.exe C:/Progra~2/Apache/logs/error_%Y%m%d.log 86400"
# 網站存取記錄檔的路徑,預設會將所有記錄寫入到同一個檔案,時間久了檔案會變很大
# 調用 rotatelogs.exe 將記錄檔以天為單位來分割
# 路徑若有空格用8.3檔名處理
# 預設有 common 及 combined 兩種格式,這邊使用 combined 記錄較詳細的資訊
# httpd.conf 中 CustomLog 有兩列,其中一列未生效,請確保只有一列生效
CustomLog "|bin/rotatelogs.exe C:/Progra~2/Apache/logs/access_%Y%m%d.log 86400" combined
# ScriptAlias : CGI script 路徑
# <Directory "CGI script 路徑"></Directory> : CGI script 路徑設定
ScriptAlias /cgi-bin/ "C:/Program Files (x86)/Apache/cgi-bin/"
<Directory "C:/Program Files (x86)/Apache/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
安裝 PHP
解壓縮 PHP
將下載回來的 PHP 解壓縮到 C:\Program Files (x86)\PHP。
建立 php.ini
複製 PHP根目錄\php.ini-production 成為 php.ini。
正式環境用 php.ini-production,開發環境可以用 php.ini-development。
設定 PHP
用文字編輯器開啟位於PHP根目錄\php.ini
的設定檔。
# Extension 路徑
extension_dir = "C:\Program Files (x86)\PHP\ext"
# 錯誤記錄檔路徑
error_log = "C:\Windows\Temp\php_errors.log"
# 檔案上傳暫存路徑
upload_tmp_dir = "C:\Windows\Temp"
# Session 存放路徑
session.save_path = "C:\Windows\Temp"
# 限制 PHP 的存取目錄範圍,若對這個範圍之外操作檔案將被禁止
open_basedir = "根目錄"
# 時區
# 其它時區參考 http://php.net/manual/en/timezones.php
date.timezone = "Asia/Taipei"
載入 PHP 模組到 Apache
用文字編輯器開啟位於Apache根目錄\conf\httpd.conf
的 Apache 設定檔。
# 載入 PHP 模組,在 Dynamic Shared Object (DSO) Support 區段加入
# php5apache2_x.dll 視使用的 PHP 版本而有所不同
LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_4.dll"
# 在 <IfModule mime_module>...</IfModule> 加入
AddHandler application/x-httpd-php .php
# 設定 php.ini 的路徑
PHPIniDir "C:/Program Files (x86)/PHP"
# 增加預設檔案,多個項目用空白分隔
DirectoryIndex 加入 index.php
啟動 Apache
一切都設定好之後就可以啟動 Apache 來測試。
開啟命令提示字元。
切換到 Apache根目錄\Apache\bin。
輸入
httpd
來啟動 Apache。將以下內容存成 info.php,並放到網站根目錄。
<?php phpinfo(); ?>
開啟 http://127.0.0.1/ 及 http://127.0.0.1/info.php 測試 Apache 及 PHP 是否正常運作。
在命令提示字元視窗按下
Ctrl
+C
停止 Apache。
安裝 Apache 為服務
每次開機都要手動啟動很不方便,可以將 Apache 安裝成服務,讓它開機時自動執行。
開啟命令提示字元。
切換到 Apache根目錄\Apache\bin。
輸入
httpd -k install -n "Apache 2.4"
。-k install
: 安裝服務-n "服務名稱"
: 服務的名稱
開啟控制台 > 系統管理工具 > 服務,啟動 Apache 服務。
適用環境
本文章適用於 Windows 7, Windows 8, Windows Server 2008, Windows Server 2012。
Reference
Apache Core Features
http://httpd.apache.org/docs/2.4/mod/core.html
Description of core php.ini directives (PHP Manual)
http://php.net/manual/en/ini.core.php
Microsoft Windows 下的 Apache 2.x
http://www.php.net/manual/zh/install.windows.apache2.php
手動安裝(非 *.msi 封裝)Apache 2.4.2 於 Windows 成功紀要
http://www.phpbb-tw.net/phpbb/viewtopic.php?t=54580