在 Linux 下搭建或使用 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 时,排错通常遵循“分层定位”的思路:从系统 → 网络 → Apache → PHP → 数据库逐层排查。下面给你一套实用排错流程。
uname -a
cat /etc/os-release
确认系统版本(CentOS / Ubuntu / Debian 等),命令可能不同。
systemctl status httpd # CentOS
systemctl status apache2 # Ubuntu
启动 / 重启:
systemctl start httpd
systemctl restart httpd
ss -lntp | grep 80
# 或
netstat -lntp | grep 80
防火墙
# CentOS
firewall-cmd --list-all
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
# Ubuntu
ufw allow 80
SELinux(CentOS)
getenforce
setenforce 0 # 临时关闭测试
tail -f /var/log/httpd/error_log # CentOS
tail -f /var/log/apache2/error.log # Ubuntu
php -v
创建测试文件:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
浏览器访问:
http://服务器IP/info.php
如果看到源码 → PHP 未正确加载。
httpd -M | grep php
# 或
apache2ctl -M | grep php
未加载则安装:
# CentOS
yum install php php-mysql
# Ubuntu
apt install php libapache2-mod-php
php --ini
查看 error_log 配置。
systemctl status mysqld
systemctl status mariadb
mysql -u root -p
常见原因:
php-mysql 扩展授权示例:
GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
tail -f /var/log/mysqld.log
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
chcon -R -t httpd_sys_content_t /var/www/html
→ 直接看 Apache 错误日志
看状态 → 看端口 → 看防火墙 → 看日志 → 分层测
日志位置速查:
| 类型 | 路径 |
|---|---|
| Apache | /var/log/httpd 或 /var/log/apache2 |
| PHP | php.ini 中 error_log |
| MySQL | /var/log/mysqld.log |
如果你有具体报错信息(如 403 / 500 / 白屏 / 连不上数据库),可以直接贴出来,我可以帮你精准分析。