阿里雲實名認證 阿里雲PHP運行環境配置
前言:為什麼「PHP環境配置」比你想的更像做菜
如果把網站比作一桌料理,那伺服器就是廚房。PHP 就是你切菜的刀:刀不對、刀不快、刀不乾淨,菜再好吃也端不出去。很多人第一次在阿里雲配 PHP,會以為「裝個 PHP 就好了」,結果遇到 502、500、找不到擴充套件、上傳不成功、連時區都不對,最後才發現:真正決定體驗的是整套運行環境配置流程。
這篇文章會用「實際可落地」的方式,帶你完成阿里雲 PHP 運行環境配置。你不需要先是大神,只要願意照著做、願意在遇到錯誤時看日志。相信我,錯誤訊息通常不是故意刁難你,它只是在說:「我早就告訴你哪裡不對了。」
你要先想清楚:你是在做哪一種部署?
阿里雲上跑 PHP,常見路線大概有幾種,你先選對路線,後面才不會一直走回頭路:
- 使用雲伺服器 ECS + 自行安裝 Nginx/Apache + PHP:最自由、最可控,但也要自己操心配置細節。
- 使用 Web 體系(如建站/鏡像/一鍵部署):快速上手,對新手友好,缺點是客製化空間較有限。
- 使用容器(Docker):把環境打包,跨機器一致性強,適合團隊開發與持續部署。
本文以最常見、也最容易碰到「你到底該改哪裡」問題的路線來講:ECS + Nginx + PHP(可搭配 FPM)。如果你走其他方式,核心概念仍然相通:PHP 版本、埠與代理、權限、擴充套件與日志。
步驟一:準備環境資源(ECS、網路與安全群組)
1. 建立或選擇 ECS 實例
登入阿里雲控制台後,建立 ECS 實例。你可以根據預期流量與網站規模選擇規格。新手建議先用中小規格跑通流程,再逐步擴容。
選系統時,通常會選 Linux(例如 CentOS/Ubuntu)。不同發行版的套件管理命令略有差異,但配置檔案的邏輯相似。
2. 檢查安全群組(Security Group)放行埠
常見要放行:
- 80(HTTP)
- 443(HTTPS)
- 22(SSH,用於你登入維護;如果不需要可限制來源 IP)
如果你只開了 80,卻把網域綁成 HTTPS,那你會看到「我已經很努力了但就是不通」的效果。先讓基本路由通起來,事情就順很多。
阿里雲實名認證 步驟二:綁定網域與 DNS(可選,但強烈建議)
如果你已經有網域,建議提前把域名解析好。流程通常是:
- 阿里雲實名認證 在 DNS 設置 A 記錄指向 ECS 公網 IP
- 若使用 HTTPS,需要額外配置證書與 Nginx 站點
如果你只是先做測試,可以直接用 IP 访问,等環境跑穩再上線綁域名。反正先把「能跑」搞定最重要。
步驟三:安裝 Nginx(或 Apache)
你可以選擇 Nginx 或 Apache。Nginx 在高併發與反代方面表現不錯,也常搭配 PHP-FPM。下面用 Nginx 為例。
1. 安裝 Nginx
以 Linux 常見套件管理方式安裝 Nginx。概念是:更新套件列表 → 安裝 nginx → 啟動並設定開機自啟。
2. 確認 Nginx 正常運行
打開瀏覽器訪問 http://你的IP/(或在伺服器上 curl),看是否能看到 Nginx 預設頁面。
如果不通,別急著改 PHP。先解決網路、防火牆與 Nginx 基礎服務,否則你會把問題「錯認成 PHP」——這是新手最常犯的錯誤之一。
步驟四:安裝與配置 PHP(重點來了)
PHP 的核心要確定三件事:
- PHP 版本要符合你的程式需求
- PHP 是透過哪種方式運行(mod_php 或 php-fpm)
- 必要的擴充套件是否已安裝、版本是否匹配
1. 安裝 PHP(建議使用 PHP-FPM 與 Nginx)
在現代部署中,Nginx + PHP-FPM 是常見組合。PHP-FPM 負責接收來自 Nginx 的請求,實際執行 PHP 程式;Nginx 只負責靜態資源與轉發。
安裝 PHP 時,你可能需要安裝一些常用擴充套件,例如:
- 阿里雲實名認證 php-mysqlnd(連接 MySQL/MariaDB)
- php-gd(圖片處理,許多框架需要)
- php-curl(呼叫外部 API)
- php-mbstring(字串多位元組處理)
- php-xml(XML 解析)
- php-zip(壓縮檔操作)
當你的專案使用 Composer 或特定擴充套件時,最好直接比對專案文件或 composer.json 要求。
2. 檢查 PHP 是否安裝成功
在網站目錄下建立一個測試檔案,例如 info.php,內容為:
<?php phpinfo();
用瀏覽器或 curl 訪問該頁面,確認 PHP 版本、載入的模組、時區等資訊都正常。
提示:測試檔案跑通後,請考慮刪掉或限制訪問,因為 phpinfo() 會暴露很多環境資訊。安全上,少一點「讓陌生人知道你家裡藏什麼」會更好。
步驟五:設定 PHP-FPM(讓 Nginx 能正確轉交 PHP)
PHP-FPM 的設定檔通常包含 pool 配置,例如使用者、監聽方式(port 或 unix socket)、以及最大連線等參數。
1. 設定監聽方式:端口 or Unix Socket
常見兩種:
- 監聽 TCP 端口:例如 9000
- 監聽 Unix Socket:例如
/var/run/php-fpm/www.sock
兩者都可以。Unix socket 在同機器內通常更有效率,但配置時要注意檔案權限。
2. 調整使用者與群組(權限問題的來源大集合)
常見現象:頁面能打開,但提交表單報錯、上傳失敗、或權限拒絕。這通常就是 PHP-FPM 的執行使用者與網站檔案/目錄權限不一致。
你需要確認:
- 網站目錄的擁有者/群組
- PHP-FPM pool 設定的 user/group
- 需要寫入的目錄(例如 cache、logs、uploads)是否賦予正確權限
務必理解:你不是在「亂改權限」,你是在讓程式能做它需要做的事。
步驟六:配置 Nginx 站點(關鍵:location 對上 PHP)
Nginx 的配置通常有以下幾塊:
- server 層:域名、根目錄、日誌路徑
- location 層:靜態資源與 PHP 請求的處理方式
對於 PHP,需要把 *.php 請求轉發到 PHP-FPM。
1. 基本的 Nginx PHP 配置邏輯
你會看到類似下面的思路(以概念示意為主):
- 設定
root指向網站根目錄 - location
~ \.php$交給 php-fpm - 包含必要的 fastcgi 參數
若你用的是 unix socket,需要把 fastcgi_pass 指到 socket 檔案;若用端口,就指到 127.0.0.1:9000 之類。
2. 防止 PHP 存在但不被執行:常見錯誤排查
阿里雲實名認證 如果你訪問 info.php 還是顯示下載檔案、或直接 404,通常是 Nginx 的 location 正則沒有匹配到,或者根目錄路徑錯了。
你可以:
- 檢查 Nginx 的 server_name 是否匹配域名或是否用 _ 作為預設
- 檢查 root 路徑是否正確
- 檢查 location 是否包含
include fastcgi_params或等價設定 - 查看 Nginx error_log(錯誤日誌)
步驟七:設定時區、編碼與常用 PHP 設定
很多人初上線會遇到「時間差兩小時」或者「日誌時間對不上」——這通常不是命運捉弄,是時區沒設好。
1. 設定 date.timezone
建議在 php.ini 或自訂 ini 檔案中設定:
- 亞洲常見:Asia/Shanghai 或你實際所在時區
若你使用框架(Laravel、ThinkPHP 等),它們可能也有自己的時區設定,但底層 PHP 時區一致會更省心。
2. 調整上傳與執行限制(避免 413/500)
常見需要調整:
upload_max_filesize(最大上傳大小)post_max_size(POST 最大大小)max_execution_time(腳本最大執行時間)max_input_vars(輸入變數上限)
遇到上傳失敗時,先看錯誤日誌,通常可以直接定位是 Nginx 限制(如 client_max_body_size)或 PHP 限制。
步驟八:安裝常用 PHP 擴充套件(依專案需求精準添加)
擴充套件這件事,跟零食一樣:多不一定好吃,少也不一定能撐住。建議你根據專案依賴來安裝,不要「什麼都裝」把環境變成雜貨鋪。
1. 典型 Web 專案的擴充套件清單
- 資料庫:pdo_mysql、mysqli
- 字串與字元:mbstring
- 圖片:gd 或 imagick(看你要不要高級功能)
- 檔案與壓縮:zip、fileinfo
- 網路請求:curl
- 日誌與錯誤追蹤:可能需要特定工具或使用框架內建
2. 安裝後別忘了重啟服務
安裝擴充套件後,通常要重啟 php-fpm 與重新載入 Nginx(或至少 reload)。如果你只安裝不重啟,就會出現「我明明裝了但怎麼還是不行?」——是的,你不是幻覺,是服務還在用舊配置。
步驟九:設定目錄權限與檔案擁有者(讓程式有力氣跑)
PHP 許多框架都需要可寫目錄,例如:
- storage(Laravel 常見)
- runtime/cache(ThinkPHP 或其他框架常見)
- uploads(上傳目錄)
- logs(日誌目錄)
常見做法是:讓目錄擁有者跟 PHP-FPM 執行 user 保持一致,或使用合適的群組權限策略。
1. 權限策略建議(不要走極端)
避免把整個站點設成 777。那是把門鎖拆了再說「反正也沒人」。正確做法是對需要寫入的目錄設置可寫權限,並確保 PHP-FPM 執行者有權寫。
2. 上傳檔案大小與權限雙重檢查
上傳失敗經常同時存在兩種原因:
- 大小超出限制(Nginx 或 PHP)
- 無法寫入目錄(權限問題)
錯誤日誌會告訴你是哪一種。如果你只看前端報錯,很容易被帶跑。
步驟十:啟用 Nginx 與 php-fpm 的最佳化(可選,但很香)
等你基本功能跑通後,可以考慮一些提升:
- 阿里雲實名認證 快取靜態資源(expires、cache-control)
- 壓縮(gzip 或 brotli)
- 調整 php-fpm 的 process 管理(pm.max_children、pm.start_servers 等)
新手階段建議先別亂調參數,因為 PHP-FPM 參數涉及吞吐與資源消耗,改錯可能讓你的 CPU 飆起來,然後你會開始懷疑人生與天氣。
步驟十一:HTTPS(加密上線,避免「看起來安全實際不安全」)
當你準備正式對外提供服務,建議配置 HTTPS。
1. 申請或使用證書
阿里雲通常提供證書申請流程。取得證書後,把證書與私鑰路徑填入 Nginx 的 server 配置。
2. Nginx 站點加入 443 設定
常見策略是:
- 80 端口做重導向到 443
- 443 提供 TLS 設定與根目錄
完成後使用瀏覽器開發者工具或線上 TLS 檢測確認是否啟用了正確協議與證書鏈。
步驟十二:錯誤日誌與常見錯誤排查(你的「救命通關密語」)
下面給你一份「遇到就查」清單。不要每次都靠猜,日誌永遠是最誠實的同事。
1. 502 Bad Gateway
通常表示 Nginx 轉發到 PHP-FPM 失敗。
- php-fpm 沒啟動或端口/socket 不存在
- fastcgi_pass 指向錯誤
- 權限問題導致無法連 socket
查:/var/log/nginx/error.log(或你配置的 error_log)與 php-fpm 日誌。
2. 500 Internal Server Error
PHP 執行時出錯或配置錯誤常見。
- PHP 語法錯誤
- 缺少擴充套件(例如 mysqli、curl)
- 檔案權限導致無法讀寫
查:PHP error log、framework 的 log(例如 storage/logs)。
3. 404 Not Found(PHP 檔存在卻找不到)
- root 路徑錯了
- location 規則未正確設定
- index.php 路徑或 try_files 設定不對(若使用框架路由)
4. 上傳失敗或圖片不顯示
- client_max_body_size 或 upload_max_filesize 限制
- 阿里雲實名認證 目錄權限不允許寫入
- 目錄 URL 未配置正確(靜態路由/alias)
步驟十三:部署程式(上傳程式碼與確認路由)
當 PHP 環境就緒,你需要把程式碼放到正確目錄。若你使用框架,確保入口檔、public 目錄與 Nginx root 設置一致。
1. 常見框架路由差異
- Laravel:通常 Nginx root 指向 public 目錄,並支援路由導向。
- ThinkPHP:可能需要 index.php 作為入口並配置重寫規則。
- WordPress:需要允許固定連結(permalink)與 .htaccess 等等(若用 Apache)。
如果你在 Nginx 下跑 WordPress/需要重寫規則,別照抄 Apache 的設定;要按照 Nginx 的語法調整。是的,這就是「同一份需求,不同的引擎」導致的差異。
一步到位的小建議:用一份「環境清單」防止你回頭找不到自己做了什麼
在完成配置後,你可以建立一份簡單的清單(手動記錄或保存檔案),包含:
- PHP 版本與安裝的擴充套件列表
- Nginx 的 server 配置檔位置、server_name、root
- php-fpm pool user/group 與監聽方式
- 時區設定、upload 限制、日誌路徑
- 安全群組放行埠與防火牆策略
這份清單會在你升級 PHP、換機或修 bug 時救你一次。你會感謝當初那個「多記一步」的自己。
常見升級與維護:PHP 版本更新要注意什麼
PHP 更新常見問題:
- 某些擴充套件不支援新版本或需要重新編譯安裝
- 舊框架/舊程式可能不相容
- 阿里雲實名認證 php.ini 配置項名可能變動
建議做法:先在測試環境(或至少維護時段)升級,並保留上一版本配置檔備份。上線前用自動化測試或至少跑一遍核心功能。
結語:你配置的不是 PHP,是「可控、可維護的運行能力」
阿里雲 PHP 運行環境配置,看起來每一步都不難,但組合起來就會變成一套互相依賴的系統:Nginx 能正確找到網站根目錄,能把 PHP 請求轉到 PHP-FPM,PHP-FPM 能以正確使用者權限執行,PHP 能載入需要的擴充套件,並把錯誤記錄到你看得到的地方。
最後送你一句維運人常用的話:配置不是一次完成的浪漫,是持續調整的日常。 你只要抓住核心原則——版本匹配、路徑正確、權限到位、日志先看——就能把坑踩得很優雅(至少在你心裡是優雅的)。
附錄:快速檢查清單(上線前 60 秒版)
- nginx 配置檔通過語法檢查(reload 前確認)
- php-fpm 服務已啟動、監聽端口/socket 正確
- info.php 可正確顯示 PHP 版本與擴充套件
- 需要寫入的目錄權限正常(cache/logs/uploads)
- 上傳大小不超限制(client_max_body_size + upload_max_filesize + post_max_size)
- 錯誤日誌路徑可用、檢查過一次 500/502 是否有對應訊息
- 阿里雲實名認證 (上線)HTTPS 已生效、80 有正確重導向(如需要)
如果你照這份清單走一遍,基本就能把「莫名其妙的壞事」提前扼殺。恭喜,你已經把 PHP 環境從「會不會突然炸」升級成「可控、可排查、可維護」。

