在 Debian 上排查 LAMP(Linux + Apache + MySQL/MariaDB + PHP)故障,可以按“分层定位”的思路来。下面给你一套实用排查流程,从最常见到较深入。
systemctl status apache2
systemctl status mariadb # 或 mysql
systemctl status php8.2-fpm # 若用 PHP-FPM
没运行就启动:
systemctl start apache2
systemctl start mariadb
开机自启:
systemctl enable apache2 mariadb
ss -tlnp | grep :80
或
netstat -tlnp | grep :80
curl -I http://localhost
200 → Apache 正常tail -n 50 /var/log/apache2/error.log
常见错误:
Permission denied → 文件权限问题DocumentRoot does not exist → 配置路径错误.htaccess 报错 → 重写规则问题apache2ctl -t
输出 Syntax OK 才正常。
php -v
Apache 下:
ls /etc/apache2/mods-enabled/ | grep php
若没有:
a2enmod php8.2
systemctl restart apache2
新建测试文件:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
浏览器访问:
http://服务器IP/info.php
mysql -u root -p
连不上常见原因:
tail -n 50 /var/log/mysql/error.log
<?php
$conn = new mysqli("localhost", "user", "pass", "db");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
?>
Web 目录推荐:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
ufw status
允许 HTTP:
ufw allow 80
ufw allow 443
云服务器还要检查安全组。
✅ Apache 是否运行
✅ 端口是否监听
✅ error.log 有无报错
✅ PHP 是否解析
✅ 数据库是否可连
✅ 文件权限是否正确
✅ 防火墙是否放行
| 现象 | 可能原因 |
|---|---|
| 403 Forbidden | 权限 / Directory 配置 |
| 500 错误 | PHP 语法 / .htaccess |
| 空白页 | PHP 报错被关闭 |
| 下载 PHP 文件 | PHP 模块未启用 |
| 连不上数据库 | 账号 / 主机 / 防火墙 |
如果你愿意,可以告诉我:
我可以帮你精准定位某一条故障。