Laravel 8部署到无SSH/root权限Web服务器后显示空白页如何排查
可能原因及排查解决步骤
- PHP环境匹配问题
Laravel 8要求PHP版本≥7.3,且必须安装BCMath、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML扩展。你可以新建一个phpinfo.php文件,写入以下内容上传到网站根目录:
<?php phpinfo();
访问该文件确认PHP版本和扩展是否符合要求,缺失扩展可联系主机商开启。
- 配置及缓存问题
- 确认你已经修改了项目根目录的
.env文件,将APP_URL改为服务器实际域名,数据库、缓存等配置和服务器环境匹配,可临时将APP_DEBUG改为true开启调试模式,测试完成后改回false - 删除
bootstrap/cache目录下的所有文件,本地生成的配置、路由缓存上传到服务器会失效,删除后Laravel会重新读取最新配置 - 确认
.env文件本身权限设置为644,避免读取失败
- 错误日志排查
访问站点后查看storage/logs目录下是否生成laravel.log日志文件,若存在直接查看日志内容即可定位具体报错点。若未生成日志,在public/index.php文件最顶部加入以下代码开启PHP原生错误显示:
ini_set('display_errors', 1); error_reporting(E_ALL);
再次访问站点即可看到PHP层面的报错信息,可针对性处理
- 重写规则问题
- 确认
public目录下Laravel自带的.htaccess文件正常上传,该文件负责路由重写,缺失会导致请求无法正常处理 - 可直接访问
你的域名/public/index.php测试是否正常加载,若可以说明根目录的重写规则存在适配问题,你可以将public目录下的所有文件移动到网站根目录,同时修改根目录下index.php的路径引用:
将
$app = require_once __DIR__.'/../bootstrap/app.php';
改为
$app = require_once __DIR__.'/bootstrap/app.php';
同时修改自动加载的引用路径即可,该方式适配多数不支持根目录重写到子目录的共享主机环境
- 文件权限及完整性问题
- 确认
storage、bootstrap/cache目录的权限设置是递归生效的,即子目录和文件也同步设置为755,仅修改父目录权限不会自动应用到子目录 - 重新同步
vendor目录,FTP传输大量文件时容易出现丢包漏传的情况,缺失核心类文件会直接导致程序中断,可将本地vendor目录打包后上传,有条件可让主机商协助在线解压避免文件丢失
内容的提问来源于stack exchange,提问作者frontend-newb
相关产品推荐
相关产品推荐

