温馨提示×

linux lamp怎样排错

小樊
53
2026-09-24 23:41:38
栏目: 智能运维

在 Linux 下搭建或使用 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 时,排错通常遵循“分层定位”的思路:从系统 → 网络 → Apache → PHP → 数据库逐层排查。下面给你一套实用排错流程。


一、先确认基础环境

uname -a
cat /etc/os-release

确认系统版本(CentOS / Ubuntu / Debian 等),命令可能不同。


二、Apache 排错

1. 服务是否启动

systemctl status httpd      # CentOS
systemctl status apache2    # Ubuntu

启动 / 重启:

systemctl start httpd
systemctl restart httpd

2. 端口是否监听

ss -lntp | grep 80
# 或
netstat -lntp | grep 80

3. 防火墙 / SELinux

防火墙

# CentOS
firewall-cmd --list-all
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

# Ubuntu
ufw allow 80

SELinux(CentOS)

getenforce
setenforce 0   # 临时关闭测试

4. Apache 错误日志(最重要)

tail -f /var/log/httpd/error_log     # CentOS
tail -f /var/log/apache2/error.log   # Ubuntu

三、PHP 排错

1. 确认 PHP 已安装并加载

php -v

2. 测试 PHP 是否解析

创建测试文件:

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

浏览器访问:

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

如果看到源码 → PHP 未正确加载。

3. 检查 Apache PHP 模块

httpd -M | grep php
# 或
apache2ctl -M | grep php

未加载则安装:

# CentOS
yum install php php-mysql

# Ubuntu
apt install php libapache2-mod-php

4. PHP 错误日志

php --ini

查看 error_log 配置。


四、MySQL / MariaDB 排错

1. 服务状态

systemctl status mysqld
systemctl status mariadb

2. 登录测试

mysql -u root -p

3. PHP 无法连数据库

常见原因:

  • 用户名 / 密码错误
  • 未授权远程或 localhost
  • 缺少 php-mysql 扩展

授权示例:

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

4. 数据库日志

tail -f /var/log/mysqld.log

五、网站访问异常通用排查

1. 403 Forbidden

  • 目录权限
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
  • SELinux
chcon -R -t httpd_sys_content_t /var/www/html

2. 404 Not Found

  • DocumentRoot 配置错误
  • 文件名大小写问题(Linux 区分大小写)

3. 500 Internal Error

→ 直接看 Apache 错误日志


六、排错顺序总结(口诀)

看状态 → 看端口 → 看防火墙 → 看日志 → 分层测

日志位置速查:

类型 路径
Apache /var/log/httpd 或 /var/log/apache2
PHP php.ini 中 error_log
MySQL /var/log/mysqld.log

如果你有具体报错信息(如 403 / 500 / 白屏 / 连不上数据库),可以直接贴出来,我可以帮你精准分析。

0 踩