调试 Debian 上的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 可以按“分层排查”来做。下面给你一套从系统到应用的常用调试流程,适合新手和实战排错。
sudo systemctl status apache2
sudo systemctl status mariadb # 或 mysql
如果服务没起来:
sudo journalctl -xe
sudo systemctl restart apache2
sudo systemctl restart mariadb
ss -lntp | grep 80
或
netstat -lntp | grep 80
sudo apache2ctl configtest
常见错误:
tail -f /var/log/apache2/error.log
访问网页时实时观察日志,非常关键。
php -v
Debian 常见包:
sudo apt install php libapache2-mod-php php-mysql
创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
浏览器访问:
http://服务器IP/info.php
如果看到源码而不是解析结果:
修复:
sudo a2enmod php8.x
sudo systemctl restart apache2
sudo mysql -u root -p
sudo tail -f /var/log/mysql/error.log
确认 PHP 连接数据库的用户权限:
SELECT host, user FROM mysql.user;
远程连接失败通常是:
编辑:
sudo nano /etc/php/8.x/apache2/php.ini
设置:
display_errors = On
error_reporting = E_ALL
重启 Apache:
sudo systemctl restart apache2
<?php
$conn = new mysqli("localhost", "user", "password", "db");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
?>
sudo ufw status
sudo ufw allow 80
sudo ufw allow 443
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
✅ Apache 是否启动
✅ PHP 是否解析
✅ 错误日志是否打开
✅ 数据库是否可连
✅ 文件权限是否正确
✅ 防火墙是否放行
你可以直接贴出:
error.log)我可以一步一步帮你定位到具体配置行。