Laravel 5.8项目部署至cPanel失败,出现500内部服务器错误
解决Laravel 5.8部署到cPanel出现500内部服务器错误的方案
嘿,我之前也碰到过Laravel部署到cPanel时的500错误,别慌,咱们一步步排查解决:
1. 检查关键目录权限
Laravel对storage和bootstrap/cache目录有读写权限要求,这是最常见的报错原因:
- 登录cPanel文件管理器,找到这两个目录,右键选择「更改权限」
- 把权限设置为
755(部分主机可能需要775,优先尝试755避免安全风险) - 所有普通文件的权限建议设为
644
2. 修正.env配置文件
本地的.env配置和线上服务器不通用,必须调整:
- 如果上传时没带.env文件,复制
.env.example并重命名为.env - 更新数据库连接信息:
DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD要和cPanel里创建的数据库一致 - 设置
APP_URL=http://learnme.web.id - 清除配置缓存:如果有cPanel终端/SSH权限,执行
php artisan config:cache和php artisan config:clear;没有终端的话,手动删除bootstrap/cache目录下的所有缓存文件
3. 确保网站根目录指向public文件夹
cPanel默认网站根目录是public_html,而Laravel的入口文件在public目录,有两种处理方式:
- 方案一:把Laravel项目
public目录下的所有文件/文件夹,移动到public_html目录中 - 方案二:修改cPanel的网站根目录设置(部分主机支持),将其指向Laravel项目的
public文件夹 - 方案三:如果不想移动文件,在
public_html里创建.htaccess文件,添加转发规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ /你的Laravel项目文件夹名/public/$1 [L] </IfModule>
4. 查看服务器错误日志定位具体问题
500错误只是通用提示,具体原因藏在日志里:
- 在cPanel中找到「错误日志」选项,查看最近的报错记录,里面会明确提示是数据库连接失败、PHP扩展缺失还是权限问题
- 如果找不到日志,联系主机管理员
webmaster@learnme.web.id获取详细日志,这是最快定位问题的方式
5. 确认PHP版本与扩展
Laravel 5.8要求PHP版本≥7.1.3,且需要启用以下扩展:
- 在cPanel的「选择PHP版本」中,确认PHP版本符合要求
- 确保启用了
OpenSSL、PDO、Mbstring、Tokenizer、XML这些Laravel必需的扩展
6. 检查public目录的.htaccess文件
如果.htaccess文件丢失或配置错误,也会导致500错误,Laravel默认的.htaccess内容如下,可复制创建新文件放在public(或public_html)目录:
<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>
先从这几个方面排查,应该能找到问题所在。如果还是不行,把错误日志里的具体信息贴出来,咱们再进一步分析!
内容的提问来源于stack exchange,提问作者Kharisma
相关产品推荐
相关产品推荐

