将Laravel 10+Inertia React部署到cPanel时遇HTTP 500错误求助
Laravel 10 + Inertia React部署cPanel遇HTTP 500错误的排查方案
针对你部署时遇到的问题——index.php能显示自定义文本但Laravel启动就报500,说明web服务器能正常解析PHP,但Laravel的初始化流程出了问题,按以下步骤排查:
1. 先看Laravel错误日志
直接去storage/logs/laravel.log里找具体错误信息,这是最快定位问题的方式。如果没权限访问日志,临时打开调试模式:修改.env里的APP_DEBUG=true,刷新页面就能看到详细错误(生产环境记得改回false)。
2. 核对文件权限
cPanel上Laravel的权限很容易出问题:
storage、bootstrap/cache目录权限设为755或775,目录里的文件设为644.env文件权限别设成777(不安全),一般644就行- 如果把整个Laravel项目放在public_html里,确保
vendor目录权限正确,不然自动加载会失败
3. 确认index.php的路径修改是否正确
你改了index.php里的URL,要保证核心文件的加载路径没错:
- 如果整个Laravel项目都在public_html下,index.php里的路径应该是:
require __DIR__.'/vendor/autoload.php'; $app = require_once __DIR__.'/bootstrap/app.php';
- 如果是把Laravel的
public目录内容移到public_html,项目主体在上级目录,那路径要改成:
require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php';
路径错了会直接导致加载不了Laravel核心,触发500。
4. 清缓存重置配置
用cPanel终端或SSH执行这些命令:
php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear php artisan optimize:clear
没SSH权限的话,临时在index.php开头加这段代码,访问一次后删掉:
<?php use Illuminate\Support\Facades\Artisan; Artisan::call('config:clear'); Artisan::call('cache:clear');
5. 检查Inertia前端配置和编译
- 确认
resources/js/app.js里的Inertia配置没问题,比如页面解析路径正确:
createInertiaApp({ resolve: name => require(`./Pages/${name}.jsx`), setup({ el, App, props }) { ReactDOM.render(<App {...props} />, el) }, })
- 部署前一定要编译前端资源:
npm run build,确保public/js、public/css里有编译后的文件,且权限正常。
6. 核对PHP版本
Laravel 10要求PHP至少8.1,去cPanel的PHP选择器里看看当前版本是否符合,不符合就切换到8.1及以上版本。
内容的提问来源于stack exchange,提问作者Abdul Wahed Sabury
相关产品推荐
相关产品推荐

