在 Debian 上调试 LAMP(Linux + Apache + MySQL/MariaDB + PHP)错误,通常要“分层排查”。下面给你一套实用调试流程,从最常见到较深入。
systemctl status apache2
如果没启动:
sudo systemctl start apache2
sudo systemctl enable apache2
查看错误:
sudo journalctl -u apache2
systemctl status mariadb
# 或
systemctl status mysql
启动:
sudo systemctl start mariadb
查看日志:
sudo journalctl -u mariadb
sudo tail -n 50 /var/log/apache2/error.log
常见错误:
Permission denied → 文件权限问题DocumentRoot does not exist → 虚拟主机路径错误AH00558 → 配置语法问题sudo apache2ctl configtest
ls /etc/apache2/sites-enabled/
示例测试:
curl -I http://localhost
dpkg -l | grep php
Debian 常见:
sudo apt install php libapache2-mod-php
启用模块:
sudo a2enmod php8.2
sudo systemctl restart apache2
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
浏览器访问:
http://localhost/info.php
如果看到源码 → PHP 没生效
常见错误:
Access denied for userUnknown database测试连接:
mysql -u root -p
php -m | grep mysqli
php -m | grep pdo
安装:
sudo apt install php-mysql
sudo systemctl restart apache2
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
Debian 默认 不用 SELinux(用 AppArmor,一般不拦 Web)
编辑:
sudo nano /etc/php/8.2/apache2/php.ini
修改:
display_errors = On
error_reporting = E_ALL
重启 Apache:
sudo systemctl restart apache2
⚠️ 生产环境要关掉
sudo ufw status
允许 HTTP:
sudo ufw allow 80
sudo ufw allow 443
✅ Apache 是否运行
✅ PHP 模块是否启用
✅ error.log 有无报错
✅ 文件权限是否正确
✅ 数据库用户权限
✅ 防火墙是否放行
如果你愿意,可以把具体错误信息(终端或浏览器报错)贴出来,我可以直接帮你定位是哪一层的问题。