You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04下Nginx部署Laravel出现500 HTTP错误求助

解决Laravel启动HTTP 500错误(PHP语法错误篇)

从你提供的Nginx错误日志来看,核心问题是PHP语法解析错误:unexpected '?',这个符号是PHP 7.0才引入的空合并运算符,说明你的服务器上运行的PHP版本低于Laravel项目要求的版本(比如Laravel 5.5及以上需要PHP 7.0+,更高版本要求更高)。之前修改storage权限、清理缓存的操作没解决问题,是因为没触碰到真正的病因。

下面是具体的排查和解决步骤:

1. 检查当前PHP版本

先确认服务器上的PHP版本,运行命令:

php -v

同时还要注意Nginx配置中使用的PHP-FPM版本,有时候CLI和FPM版本可能不一致,你可以在Nginx配置文件(/etc/nginx/sites-enabled/default)里找到类似这样的行:

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

这里的php7.4-fpm就是当前Nginx使用的PHP版本,对比CLI版本是否一致。

2. 升级PHP到符合Laravel要求的版本

根据你的Laravel版本,安装对应的PHP版本:

  • 如果是Laravel 8.x:需要PHP 7.3+
  • Laravel 9.x:PHP 8.0+
  • Laravel 10.x:PHP 8.1+

以Ubuntu系统安装PHP 7.4为例:

# 添加PPA源(如果没有的话)
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# 安装PHP 7.4及所需扩展
sudo apt install php7.4 php7.4-fpm php7.4-mbstring php7.4-xml php7.4-mysql php7.4-curl

# 切换Nginx使用的PHP版本
# 修改/etc/nginx/sites-enabled/default中的fastcgi_pass行,改为对应版本的sock路径
# 比如:fastcgi_pass unix:/run/php/php7.4-fpm.sock;

# 重启Nginx和PHP-FPM
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

3. 再次验证项目运行

完成升级后,先清除项目缓存(避免旧缓存影响):

cd /home/enthys/workspace/CodeBattles
php artisan cache:clear
php artisan config:clear

然后访问项目,看是否还出现500错误。如果还有问题,可以再查看Nginx错误日志,确认是否有新的报错。

补充说明

之前修改storage权限的操作是必要的,但只解决了权限类的500错误,这次的问题是PHP版本不兼容导致的语法错误,所以优先级更高。另外,尽量不要用777权限,755给目录,644给文件更安全,你可以这样设置:

sudo chown -R www-data:www-data /home/enthys/workspace/CodeBattles/storage
sudo chmod -R 755 /home/enthys/workspace/CodeBattles/storage
sudo find /home/enthys/workspace/CodeBattles/storage -type f -exec chmod 644 {} \;

内容的提问来源于stack exchange,提问作者Enthys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:07:51