调试 Ubuntu 下的 LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境,通常按“分层排查”的思路进行。下面给你一套实用调试流程,从最常见的问题到进阶排查。
systemctl status apache2
启动 / 重启 / 开机自启:
sudo systemctl start apache2
sudo systemctl restart apache2
sudo systemctl enable apache2
测试 Apache 是否正常:
curl http://localhost
或浏览器访问 http://服务器IP
systemctl status mysql
# 或
systemctl status mariadb
启动:
sudo systemctl start mysql
登录测试:
mysql -u root -p
查看 PHP 版本:
php -v
确认 Apache 是否加载 PHP:
apache2ctl -M | grep php
(应看到 php7_module 或 php8_module)
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/apache2/access.log
编辑 php.ini:
php --ini
常见位置:
/etc/php/8.1/apache2/php.ini
开启错误显示(开发环境):
display_errors = On
error_reporting = E_ALL
重启 Apache:
sudo systemctl restart apache2
创建测试文件:
sudo nano /var/www/html/phpinfo.php
内容:
<?php
phpinfo();
访问:
http://服务器IP/phpinfo.php
✅ 能看到 PHP 信息页 → PHP + Apache 正常
❌ 下载文件 / 空白页 → PHP 未正确加载
示例配置文件:
sudo nano /etc/apache2/sites-available/example.conf
基本内容:
<VirtualHost *:80>
ServerName example.local
DocumentRoot /var/www/example
<Directory /var/www/example>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
启用站点:
sudo a2ensite example.conf
sudo systemctl reload apache2
检查配置语法:
apache2ctl configtest
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
sudo a2enmod rewrite
sudo systemctl restart apache2
<?php
$conn = new mysqli("localhost", "root", "密码");
if ($conn->connect_error) {
die("失败: " . $conn->connect_error);
}
echo "成功";
常见问题:
localhost 但走了 socket解决:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
sudo ufw allow 80
sudo ufw allow 443
sudo ufw status
sudo netstat -tulnp | grep :80
如果你愿意,可以把具体报错信息或现象(比如 500 错误、白屏、连不上数据库)贴出来,我可以帮你精准定位。