温馨提示×

怎样调试Debian的LAMP错误

小樊
44
2026-10-01 20:19:29
栏目: 智能运维

调试 Debian 上的 LAMP(Linux + Apache + MySQL/MariaDB + PHP)错误,通常可以按“分层排查”的思路进行。下面给你一套实用调试流程。


一、先确认服务状态

1. Apache

systemctl status apache2

启动 / 重启:

sudo systemctl start apache2
sudo systemctl restart apache2

2. MySQL / MariaDB

systemctl status mariadb
# 或
systemctl status mysql

二、查看日志(最重要)

1. Apache 错误日志

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

常见错误:

  • Permission denied → 文件/目录权限问题
  • File does not exist → 路径错误
  • PHP Fatal error → PHP 代码或扩展问题

2. Apache 访问日志

sudo tail -n 50 /var/log/apache2/access.log

3. PHP 错误

编辑 php.ini:

php --ini

确保:

display_errors = On
error_reporting = E_ALL
log_errors = On

PHP 错误日志位置:

grep error_log /etc/php/*/apache2/php.ini

4. MySQL / MariaDB 日志

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

三、测试 PHP 是否正常工作

创建测试文件:

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

浏览器访问:

http://服务器IP/info.php

看不到页面 → Apache 或 PHP 模块问题。

检查 PHP 模块:

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

如果没有:

sudo apt install libapache2-mod-php
sudo a2enmod php
sudo systemctl restart apache2

四、权限问题(非常常见)

1. Web 目录权限

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

2. SELinux(Debian 默认关闭,但可确认)

getenforce

如果是 Enforcing,需要放行 HTTP。


五、数据库连接错误

测试数据库连通性

mysql -u root -p

PHP 连接示例

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

常见原因:

  • 用户无权限
  • 使用了 localhost 但 MariaDB 只监听 socket
  • 防火墙 / bind-address

六、Apache 配置错误

检查配置:

sudo apache2ctl configtest

虚拟主机示例:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
    </Directory>
</VirtualHost>

启用站点:

sudo a2ensite example.conf
sudo systemctl reload apache2

七、快速排错清单

✅ Apache 是否在运行
✅ PHP 模块是否启用
✅ 错误日志是否查看
✅ 文件权限是否正确
✅ 数据库是否可连接
✅ 防火墙是否放行 80/443


如果你愿意,可以把具体报错信息或日志内容贴出来,我可以直接帮你定位是 Apache、PHP 还是 MySQL 的问题。

0 踩