502 Bad Gateway 错误表示作为代理或网关的服务器(这里是 Nginx)从上游服务器(这里是 PHP-FPM)收到了无效响应。在 Laravel 站点中,这通常意味着 Nginx 无法正确与 PHP-FPM 通信。
# 检查 PHP-FPM 状态
sudo systemctl status php-fpm
# 重启 PHP-FPM
sudo systemctl restart php-fpm
sudo tail -n 50 /var/log/nginx/error.log
确保 Nginx 配置中的 fastcgi_pass
与 PHP-FPM 监听地址匹配:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据实际 PHP 版本调整
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
# 设置 Laravel 目录权限
sudo chown -R www-data:www-data /path/to/laravel
sudo chmod -R 755 /path/to/laravel/storage
sudo chmod -R 755 /path/to/laravel/bootstrap/cache
编辑 /etc/php/7.4/fpm/pool.d/www.conf
(路径可能不同):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
request_terminate_timeout = 60
然后重启 PHP-FPM:
sudo systemctl restart php-fpm
确保 .env
文件存在且配置正确:
cp .env.example .env
php artisan key:generate
# 查看系统日志
sudo dmesg
sudo journalctl -xe
# 检查内存和 CPU 使用情况
free -h
top
创建测试文件 /var/www/html/test.php
:
<?php
phpinfo();
?>
访问此文件,看是否能正常显示 PHP 信息。
ls -la /run/php/php7.4-fpm.sock
确保 Nginx 用户(通常是 www-data)有访问权限。
通过以上步骤,大多数 502 错误都能被诊断和解决。如果问题仍然存在,可能需要更深入地检查系统资源或应用程序代码中的内存泄漏问题。
没有搜到相关的文章