温馨提示×

如何排查debian lamp故障

小樊
39
2026-09-07 20:31:14
栏目: 智能运维

在 Debian 上排查 LAMP(Linux + Apache + MySQL/MariaDB + PHP)故障,可以按“分层定位”的思路来。下面给你一套实用排查流程,从最常见到较深入。


一、确认系统和服务状态

1. 看三大服务是否运行

systemctl status apache2
systemctl status mariadb   # 或 mysql
systemctl status php8.2-fpm  # 若用 PHP-FPM

没运行就启动:

systemctl start apache2
systemctl start mariadb

开机自启:

systemctl enable apache2 mariadb

二、Apache 层排查

2. 看 Apache 是否监听端口

ss -tlnp | grep :80

netstat -tlnp | grep :80

3. 测试 Apache 本身

curl -I http://localhost
  • 能返回 200 → Apache 正常
  • 连接拒绝 → 服务没起或端口不对

4. 查 Apache 错误日志

tail -n 50 /var/log/apache2/error.log

常见错误:

  • Permission denied → 文件权限问题
  • DocumentRoot does not exist → 配置路径错误
  • .htaccess 报错 → 重写规则问题

5. 检查虚拟主机配置

apache2ctl -t

输出 Syntax OK 才正常。


三、PHP 层排查

6. 确认 PHP 是否安装并启用

php -v

Apache 下:

ls /etc/apache2/mods-enabled/ | grep php

若没有:

a2enmod php8.2
systemctl restart apache2

7. 测试 PHP 是否解析

新建测试文件:

echo "<?php phpinfo(); ?>" > /var/www/html/info.php

浏览器访问:

http://服务器IP/info.php
  • 显示 PHP 信息 → 正常
  • 下载文件 → PHP 未解析

四、MySQL / MariaDB 层排查

8. 数据库能否连

mysql -u root -p

连不上常见原因:

  • 服务没起
  • 密码错误
  • socket 权限问题

9. 看数据库日志

tail -n 50 /var/log/mysql/error.log

10. PHP 连数据库测试

<?php
$conn = new mysqli("localhost", "user", "pass", "db");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
?>

五、权限与防火墙

11. 文件权限

Web 目录推荐:

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

12. 防火墙

ufw status

允许 HTTP:

ufw allow 80
ufw allow 443

云服务器还要检查安全组


六、综合快速排查清单

✅ Apache 是否运行
✅ 端口是否监听
✅ error.log 有无报错
✅ PHP 是否解析
✅ 数据库是否可连
✅ 文件权限是否正确
✅ 防火墙是否放行


七、常见典型故障速查

现象 可能原因
403 Forbidden 权限 / Directory 配置
500 错误 PHP 语法 / .htaccess
空白页 PHP 报错被关闭
下载 PHP 文件 PHP 模块未启用
连不上数据库 账号 / 主机 / 防火墙

如果你愿意,可以告诉我:

  • Debian 版本
  • Apache / PHP / MySQL 版本
  • 具体报错信息或现象

我可以帮你精准定位某一条故障

0