Lumen/Laravel API部署后返回500 Internal Server Error
Lumen/Laravel部署后接口返回500错误排查清单
你已经完成的三步操作是基础部署流程,遗漏以下常见配置/操作时大概率会触发500错误,按优先级排查即可:
- 目录权限配置错误(最高发)
Lumen/Laravel 要求storage目录(含所有子目录)和bootstrap/cache目录必须具备Web运行用户的读写权限,否则无法写入日志、缓存、会话文件,直接触发500。
假设Web服务运行用户为www-data,在项目根目录执行以下命令修正权限:
另外你移动了public目录,需再次核对chown -R www-data:www-data storage bootstrap/cache chmod -R 755 storage bootstrap/cachepublic/index.php中注册的项目根路径是否正确,若路径拼写错误导致找不到autoload.php或应用启动文件,也会直接返回500。 - Composer依赖未正确安装
直接复制本地项目文件夹时,若缺失vendor目录、依赖版本与服务器PHP版本不兼容、未排除开发依赖,都会触发类找不到的致命错误。进入项目根目录执行以下命令重新安装生产环境依赖:
执行前先通过composer install --no-dev --optimize-autoloaderphp -m核对PHP扩展,必须安装框架要求的mbstring、openssl、pdo、tokenizer扩展,缺任意一个核心扩展都会导致运行失败。 - 应用密钥与配置缓存异常
若.env中APP_KEY为空,框架加密会话、生成签名时会直接报错:- Laravel环境可执行
php artisan key:generate生成合法密钥 - Lumen环境无内置生成命令,可手动填写32位随机字符串作为
APP_KEY值
完成密钥配置后,清除旧缓存并生成生产环境配置缓存,避免本地旧配置残留:
注意:Lumen执行路由缓存前需确认路由定义中无闭包函数,否则会触发缓存命令报错。php artisan config:clear php artisan cache:clear php artisan route:clear php artisan config:cache php artisan route:cache - Laravel环境可执行
- Web服务器配置错误
你当前访问地址带/public段,说明站点根目录配置存在问题:正确配置下站点根目录应直接指向public文件夹,接口访问地址应为https://my-domain/api/v1/mytest,无需带/public前缀。- 若使用Nginx,需在站点配置中添加路径重写规则,否则路由无法正确解析:
location / { try_files $uri $uri/ /index.php?$query_string; } - 若使用Apache,需确认public目录下的
.htaccess文件已随代码复制,且已开启Apache的rewrite模块,否则重写规则不生效。
- 若使用Nginx,需在站点配置中添加路径重写规则,否则路由无法正确解析:
- 未定位具体错误原因
若以上配置都修正后仍报错,可临时将.env中APP_DEBUG改为true、APP_ENV改为local,刷新接口即可看到具体报错信息;也可直接查看storage/logs目录下的日期日志文件,框架会将所有致命错误、数据库连接错误、代码报错完整记录在日志中,可根据日志提示精准定位问题。排查完成后记得将debug模式关闭,避免泄露敏感信息。
另外需核对.env中数据库、缓存、队列服务的连接参数是否正确,服务器网络是否能正常连通对应服务,连接失败也会触发500错误。
内容的提问来源于stack exchange,提问作者mollusk
相关产品推荐
相关产品推荐

