在 Debian 上排查 PHP 出错,一般按「看错误在哪一层」来逐步定位。下面是一套比较实用的排查思路。
php -v
如果命令不存在:
which php
# 或
ls /usr/bin/php*
未安装则:
sudo apt update
sudo apt install php php-cli
php /path/to/script.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
php --ini
常见关键项:
display_errors = On
error_reporting = E_ALL
log_errors = On
修改后重启相关服务(如 fpm)。
Nginx
sudo tail -f /var/log/nginx/error.log
Apache
sudo tail -f /var/log/apache2/error.log
php --ini
找到:
error_log = /var/log/php_errors.log
查看:
sudo tail -f /var/log/php_errors.log
sudo systemctl status php-fpm
# 或
sudo systemctl status php8.2-fpm
重启:
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
display_errors 未开ls -l /var/www/html
一般:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
如 cache/、storage/
sudo chmod -R 775 storage
sudo chown -R www-data:www-data storage
php -m
sudo apt install php-mysql php-curl php-mbstring php-xml php-gd
注意 PHP 版本要一致(如 php8.2)
| 现象 | 可能原因 |
|---|---|
php -v 报错 |
PHP 未安装 / 路径错 |
| CLI 正常,Web 报错 | php-fpm / web 配置 |
| 白屏 | 错误被隐藏 |
| 502 | php-fpm 挂了 |
| 404 | rewrite / 路径 |
| 权限 denied | 用户 / 目录权限 |
php -vdisplay_errors如果你能贴出:
我可以帮你更精确地定位。