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

无法部署Laravel 5.6.7到子域名,访问出现500错误求助

嘿,我来帮你梳理这个持续出现的500错误问题,先从你提到的核心信息入手分析:

核心诱因:PHP版本不兼容

首先要明确一个关键规则:Laravel 5.6.x 官方要求的最低PHP版本是 7.1.3,而你的服务器PHP版本仅为7.0,完全达不到运行要求。Laravel 5.6用到了PHP7.1+才支持的语法特性(比如nullable类型声明、void返回类型等),在7.0环境下运行会直接触发致命错误,这大概率是导致500错误的主因。

其他辅助排查点(解决版本问题后仍报错的话)
  • 权限设置是否彻底:你设置了bootstrap和storage为755,但要确认这两个目录下的所有子文件、子目录权限也正确,建议用递归命令设置:chmod -R 755 bootstrap/cache storage。同时要确保服务器的Web运行用户(比如常见的www-data)拥有这些目录的写入权限,必要时可执行chown -R www-data:www-data bootstrap/cache storage(根据你的服务器实际用户调整)。
  • 环境缓存冲突:本地开发环境生成的缓存文件和服务器环境不兼容,建议上传项目后在服务器端执行以下命令清理缓存:
    php artisan config:clear
    php artisan cache:clear
    php artisan view:clear
    
    如果无法直接执行artisan命令,也可以手动删除bootstrap/cache目录下的所有文件。
  • .htaccess配置验证:Laravel public目录下的默认.htaccess规则是保证路由正常的关键,如果你的文件有修改,建议替换为官方默认内容:
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • .env文件配置检查:确认服务器上的.env文件配置正确,比如数据库连接信息、APP_URL是否匹配子域名环境,同时要将.env文件权限设置为644,避免敏感信息泄露。
建议解决步骤
  1. 优先联系服务器提供商,将PHP版本升级到7.1.3或更高(推荐7.4,Laravel5.6也兼容该版本);
  2. 如果暂时无法升级PHP,可考虑降级Laravel到兼容PHP7.0的版本(比如Laravel5.5),但降级需要调整项目依赖和代码,成本相对较高;
  3. 完成版本调整后,重新检查权限、缓存和.htaccess配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:02:39