瀏覽器訪問 PHP 頁面時,完全無任何輸出(連 HTML 骨架都沒有),查看源代碼也是空白。這比報錯更讓人崩潰,因為沒有任何線索。
建立 test.php:
<?php phpinfo(); ?>
若正常顯示,說明 PHP-FPM/Apache 模塊工作正常;否則檢查服務狀態、端口、權限、錯誤日誌。
在腳本最頂部添加:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>
或修改 php.ini:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
生產環境調試完畢務必關閉!
/var/log/nginx/error.log/var/log/apache2/error.log 或 /var/log/httpd/error_log/var/log/php-fpm/error.log(或 pool 定義的 php_admin_value[error_log])常見日誌關鍵字:Permission denied、No such file or directory、Allowed memory size exhausted、Maximum execution time exceeded。
如漏分號、括號不匹配、關鍵字拼寫錯誤。PHP 解析階段出錯不會進入運行階段,若 display_errors=Off 直接白屏。
對策:命令行執行 php -l your_script.php 做語法檢查。
memory_limit)max_execution_time)對策:查看錯誤日誌定位行號;臨時開啟 display_errors。
ob_start() 後未 ob_end_flush()、多層緩衝嵌套、zlib.output_compression 與 ob_gzhandler 衝突。
對策:檢查代碼中所有 ob_* 調用;嘗試在入口文件最頂部加 ob_end_clean()。
在任何輸出(包括 BOM、空白行、echo、HTML)之前調用 header()、setcookie()、session_start() 會觸發警告並導致後續邏輯中斷。
對策:確保 緊貼文件開頭,無 BOM(用 file -i 或編輯器「UTF-8 無 BOM」保存)。
chmod 644)chmod 755)瀏覽器長時間等待最終超時顯示空白。檢查 while(true)、遞歸無出口、死鎖。
Laravel/ThinkPHP/Symfony 等框架路由未匹配、控制器不存在、中間件攔截返回空響應。查看框架日誌(storage/logs/laravel.log 等)。
php -l 語法檢查通過error_log 有無新增 Fatal/Parsing 錯誤memory_limit/max_execution_time 是否過小error_log 無 500/權限錯誤