首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Nginx PHP 回傳 200 但空白頁:完整設定檢查清單

     編輯:PHP 相關知識

現象確認

  • 靜態 HTML 正常
  • phpinfo() 頁面 HTTP 200 但內容為空
  • 無任何 PHP 錯誤訊息輸出

核心修正:Nginx 設定補全

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    
    # 必須明確定義(預設 fastcgi_params 不包含)
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
    include        fastcgi_params;
}

替代方案:擴充 fastcgi_params

# /etc/nginx/fastcgi_params 追加
# PHP --enable-force-cgi-redirect 時需求
fastcgi_param  REDIRECT_STATUS  200;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

完整排查清單

檢查項目指令/位置正常值
PHP-FPM 服務狀態systemctl status php-fpmactive (running)
PHP-FPM 監聽埠netstat -tlnp | grep 9000127.0.0.1:9000
Nginx 設定語法nginx -tsyntax is ok
PHP 檔案權限ls -l /var/www/html/www-data 可讀
SCRIPT_FILENAME 參數建立 phpinfo.php 驗證顯示完整絕對路徑
PHP 錯誤日誌/var/log/php-fpm/error.log無致命錯誤
open_basedir 限制php.ini / .user.ini包含網站根目錄

PHP-FPM 設定確認

; /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
; 或 Unix socket(效能更好)
; listen = /run/php-fpm/php-fpm.sock

; 權限設定
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

; 進程管理
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

快速驗證腳本

<?php
// test.php
echo "SCRIPT_FILENAME: " . $_SERVER['SCRIPT_FILENAME'] . "\n";
echo "DOCUMENT_ROOT: " . $_SERVER['DOCUMENT_ROOT'] . "\n";
echo "REQUEST_URI: " . $_SERVER['REQUEST_URI'] . "\n";
phpinfo();
?>

重啟服務生效

nginx -t && systemctl reload nginx
systemctl restart php-fpm
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved