在 Windows 作業系統中安裝 PHP 開發環境,最簡單的方法就是使用集成的 WAMP 安裝工具,這樣可以一次性完成環境配置。 過去,Apache + PHP + MySQL 幾乎是開發 PHP 網頁的標準配備,因此出現了很多集成的安裝工具,例如:XAMPP、WampServer、AppServ。 儘管這些工具提供了便利性,但同時也有很多缺點,例如:

  • 容易導致使用者對 Apache、PHP 和 MySQL 之間的關聯性理解不足,從而錯過了學習許多重要知識的機會。
  • 不容易單獨更新某個軟體的版本,每個軟體的版本更新都受到安裝工具的限制。
  • 在實際部署網站時,這些集成工具很少被使用。

因此,本文將不採用這類工具進行環境設置。而是選擇每個軟體個別安裝。 本文安裝的軟體組合為 Nginx + PHP + MariaDB,這是我自己常用的組合。當然,還有其他優秀的選擇,如 Apache、IIS 或 MySQL。

開啟隱藏檔及顯示副檔名

Windows 預設會隱藏副檔名及隱藏檔,但在程式開發之前,建議先把它打開顯示。開啟任一資料夾,點選上方 ⋯ > 選項,開啟資料夾選項,點選檢視並取消勾選隱藏已知檔案類型的副檔名,及選取顯示隱藏的檔案、資料夾及磁碟機,最後點選套用即可。

安裝 Nginx

本文安裝目錄為:C:\Web\nginx (可自行調整)。

  • STEP 1

    點擊下方連結進入官網,並點選 Stable version 中的 nginx/Windows-1.22.1 進行下載。

  • STEP 2

    將下載完成的檔案解壓縮,並放至到 C:\Web\nginx 目錄。

  • STEP 3

    打開命令提示字元 (CMD),並使用以下指令啟動 Nginx。

                        
                            // 啟動
                            C:\Web\nginx\nginx.exe -p C:\Web\nginx
    
                            // 其他指令
                            // 檢查設定檔有無錯誤
                            nginx.exe -t
    
                            // 停止
                            nginx.exe -s stop
                        
                    

    啟動後,CMD 視窗並不會關閉,也無法輸入其他指令,也沒辦法用 Ctrl + C 關閉視窗。 如果要停止 Nginx,可以另外再開一個 CMD 並輸入停止指令 (指令:nginx.exe -s stop),或者直接在工作管理員刪除 Nginx 行程即可。 我知道這樣的執行方式有點麻煩,後續我會展示更簡單的啟動方式。

  • STEP 4

    打開瀏覽器,網址輸入 http://localhost,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 Nginx 安裝完成。

安裝 PHP

本文安裝目錄為:C:\Web\php (可自行調整)。

  • STEP 1

    新版本的 PHP 是使用 VS15 或 VS16 建構的,安裝之前需要先安裝 Microsoft Visual C++ 可轉散發套件。 點擊下方連結進入官網下載安裝檔,並進行安裝,基本上安裝過程也沒有什麼選項,直接安裝應不會有什麼問題。

  • STEP 2

    接下來就可以安裝 PHP 了,點擊下方連結進入官網,並點選 VS16 x64 Non Thread Safe 中的 Zip 進行下載。

    有關 Non Thread Safe 與 Thread Safe 版本的差異,在後續章節會有進一步的說明,請參考以下網址。

  • STEP 3

    將下載完成的檔案解壓縮,並放至到 C:\Web\php 目錄。將 php.ini-development,更名為 php.ini,這個檔案就是 PHP 的設定檔,可以直接用記事本開啟編輯。

    設定檔先修改 display_errorsdate.timezone 兩個參數,其他設定都先使用預設值即可,後續會再另外一篇文章詳細說明。

                        
                            ; 預設應該就是 On,確認一下即可。
                            display_errors = On
    
                            ; 記得把前面的分號(;)移除,分號表示註解。
                            date.timezone = Asia/Taipei
                        
                    
  • STEP 4

    打開命令提示字元 (CMD),並使用以下指令啟動 PHP FastCGI。

                        
                            // 啟動
                            C:\Web\php\php-cgi.exe -b 127.0.0.1:9000
                        
                    

    啟動後,CMD 視窗並不會關閉,也無法輸入其他指令,要關閉 FastCGI 的話,可以直接按 Ctrl + C 退出就可以了。

  • STEP 5

    接下來,需要修改 Nginx 設定檔,讓 Nginx 將 HTTP 請求轉發給 PHP FastCGI 處理。使用記事本開啟 C:\Web\nginx\conf\nginx.conf 檔案,並根據以下內容進行修改。修改完成後,記得重啟 Nginx 服務。

                        
                            #user  nobody;
                            worker_processes  1;
    
                            error_log  logs/error.log;
                            #error_log  logs/error.log  notice;
                            #error_log  logs/error.log  info;
    
                            #pid        logs/nginx.pid;
    
                            events {
                                worker_connections  1024;
                            }
    
                            http {
                                ... (省略) ...
    
                                server {
                                    listen       80;
                                    server_name  localhost;
                                    root C:/Web/nginx/html;         # 網頁預設目錄
                                    charset utf-8;
    
                                    location / {
                                        index index.php index.html index.htm;
                                    }
    
                                    ... (省略) ...
    
                                    location ~ \.php$ {
                                        fastcgi_pass   127.0.0.1:9000;      # 必需與 php-cgi.exe -b 參數後面的 address:port 相同
                                        fastcgi_index  index.php;
                                        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                                        include        fastcgi_params;
                                    }
    
                                    ... (省略) ...
                                }
                            }
                        
                    

    # 字號開頭的為註解,沒有任何作用。

  • STEP 6

    接下來撰寫一個簡單的 PHP 程式測試。開啟記事本,輸入以下程式碼,並使用檔名 index.php 存檔,最後將檔案放到 C:\Web\nginx\html 目錄底下。

                        
                            <?php
                            phpinfo();
                        
                    
  • STEP 7

    打開瀏覽器,網址輸入 http://localhost/,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 PHP 及 Nginx 都安裝完成,並且設定無誤。

安裝 MariaDB

本文安裝目錄為:C:\Program Files\MariaDB 10.6\ (可自行調整)。

MariaDB 是 MySQL 的一個分支,早期版本幾乎完全相容於 MySQL,但新版本已漸漸不相容了。之所以會有這個分支,是因為 MySQL 被 Oracle 收購之後,很多人擔心 MySQL 可能會閉源,因此才有 MariaDB 這個分支。
  • STEP 1

    點擊下方連結進入官網,並根據下圖選項選擇安裝檔,進行下載。

  • STEP 2

    執行安裝檔,並點擊Next按鈕。

  • STEP 3

    勾選 I accept the term in the License Agreement,並點擊 Next 按鈕。

  • STEP 4

    根據需求調整,也可以直接用預設就好,完成後點擊Next按鈕。

  • STEP 5

    輸入 root 密碼,勾選 Enable access from remote machines for 'root' userUse UTF8 as default server's character set,最後點擊 Next 按鈕。

  • STEP 6

    根據需求調整,建議直接用預設就好,完成後點擊Next按鈕。

  • STEP 7

    直接點擊 Install 按鈕,安裝完成後,點擊 Finish 按鈕。

  • STEP 8

    安裝完成後,可以使用 HeidiSQL 測試看看,這是安裝 MariaDB 資料庫附加安裝的軟體。 點擊左下的新增按鈕,再右邊 Library 選擇 libmysql.dll,並輸入密碼,最後點擊開啟按鈕。

  • STEP 9

    正常的話,您應該能看到下圖畫面,表示資料庫已經安裝完成了。

  • STEP 10

    MariaDB 安裝完成後,服務就會自動啟動了,如果要手動啟動閉或停止資料庫服務,可以打開命令提示字元 (CMD),並使用以下指令。

                        
                            // 啟動
                            net start MariaDB
    
                            // 停止
                            net stop MariaDB
                        
                    

製作 bat 檔

安裝完成後,需要透過指令來啟動及關閉各項服務,為了方便使用,我們可以將這些指令製作成 bat 檔,並讓這些服務可以在背景執行。 要在命令提示字元 (CMD) 下,讓指令背景執行有很多種方式,我覺得比較簡單的方式是使用 RunHiddenConsole 工具,以下有兩個載點,擇一下載即可。

下載完成後,建立一個新的資料夾,並將 RunHiddenConsole.exe 複製到資料夾中。 在資料夾中建立 start.bat、stop.bat 及 restart.bat 三個檔案,檔案內容如下。

start.bat

            
                @ECHO OFF

                set PHP_HOME=C:\Web\php
                set NGINX_HOME=C:\Web\nginx

                ECHO Starting PHP FastCGI...
                RunHiddenConsole.exe %PHP_HOME%\php-cgi.exe -b 127.0.0.1:9000

                ECHO Starting NGINX
                RunHiddenConsole.exe %NGINX_HOME%\nginx.exe -p %NGINX_HOME%

                popd

                EXIT /b
            
        

stop.bat

            
                @ECHO OFF

                echo Stopping nginx...
                taskkill /f /IM nginx.exe

                echo Stopping PHP FastCGI...
                taskkill /f /IM php-cgi.exe

                EXIT /b
            
        

restart.bat

            
                @ECHO OFF

                call stop.bat
                call start.bat

                EXIT /b
            
        

完成後,只要點兩下 start.bat 檔,就能啟動 Nginx、PHP FastCGI 及 MariaDB 服務,同理要關閉服務,就點兩下 stop.bat 檔。

常用目錄及檔案

Nginx

[Nginx 目錄]\conf\nginx.conf
Nginx 設定檔。
[Nginx 目錄]\html\access.log
存取紀錄 Log 檔,如果有使用者連入您的網站,這邊都會有紀錄。
[Nginx 目錄]\logs\error.log
錯誤紀錄 Log 檔,網頁伺服器產生的錯誤訊息。
[Nginx 目錄]\html\
預設的網頁存放路徑,未來您寫的 HTML、CSS、JavaScript、PHP... 都放在這裡。
[Nginx 目錄]\ngxin.exe
Nginx 執行檔。

PHP

[PHP 目錄]\php.ini
PHP 設定檔。
[PHP 目錄]\php.exe
PHP 執行檔。
[PHP 目錄]\php-cgi.exe
PHP CGI 執行檔。
[PHP 目錄]\ext\
PHP 擴展庫 (extension) 存放目錄。

MariaDB

[MariaDB 目錄]\data\
資料庫實體檔案儲存路徑。
[MariaDB 目錄]\data\my.ini
資料庫設定檔。