温馨提示×

怎样调试linux lamp

小樊
35
2026-09-18 20:02:01
栏目: 智能运维

调试 Linux 下的 LAMP(Linux + Apache + MySQL/MariaDB + PHP)环境,通常按“分层排查”的思路进行。下面给你一套实用调试流程,从最常见的问题到深入排查。


一、确认基础服务是否运行

1. 检查 Apache

systemctl status httpd      # CentOS / RHEL
systemctl status apache2   # Ubuntu / Debian

未运行则启动:

systemctl start httpd
# 或
systemctl start apache2

2. 检查 MySQL / MariaDB

systemctl status mysqld
# 或
systemctl status mariadb

3. 检查 PHP

php -v

二、查看日志(最重要)

Apache 日志

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

PHP 错误

确认 php.ini 中:

display_errors = On
error_reporting = E_ALL
log_errors = On

PHP 日志位置:

php --ini

MySQL 日志

tail -f /var/log/mysqld.log
# 或
tail -f /var/log/mysql/error.log

三、测试 PHP 是否正常工作

创建测试文件:

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

浏览器访问:

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

✅ 能看到 PHP 信息 → PHP + Apache 正常
❌ 下载文件 / 空白页 → PHP 模块未加载


四、Apache + PHP 模块问题

CentOS

httpd -M | grep php

若无 php_module,安装:

yum install php php-mysql
systemctl restart httpd

Ubuntu

a2enmod php8.1   # 按版本
systemctl restart apache2

五、数据库连接调试

测试 MySQL 登录

mysql -u root -p

PHP 连接测试

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

常见错误:

  • 用户名 / 密码错误
  • 数据库未授权
  • localhost vs 127.0.0.1

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

网站目录权限

chown -R apache:apache /var/www/html   # CentOS
chown -R www-data:www-data /var/www/html # Ubuntu
chmod -R 755 /var/www/html

SELinux(CentOS)

setenforce 0   # 临时关闭测试
getenforce

如解决,配置:

setsebool -P httpd_can_network_connect_db on

七、防火墙 & 端口

firewall-cmd --list-all
# 或
iptables -L

开放 80 / 443:

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

八、常见问题速查表

现象 可能原因
403 Forbidden 目录权限 / SELinux
500 错误 PHP 语法 / .htaccess
空白页 PHP 报错被隐藏
无法连数据库 账号 / 防火墙
下载 .php 文件 PHP 模块未加载

九、进阶调试工具

  • strace -p <pid>(系统调用)
  • tcpdump / netstat
  • Apache:apachectl configtest
  • PHP:php -l file.php

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

  • 系统版本(CentOS / Ubuntu)
  • 具体报错信息或现象

我可以给你针对性的一步一步排查方案

0