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

Laravel部署至虚拟主机后storage/logs权限及路径异常求助

解决Laravel部署到虚拟主机后仍读取本地storage路径&权限拒绝问题

看起来你遇到了Laravel部署后常见的缓存残留+权限配置问题,我来一步步帮你解决:

1. 清除服务器上残留的本地缓存文件

你本地运行缓存命令生成的文件里已经硬编码了本地路径,上传到服务器后会导致系统依然读取旧路径。先登录到虚拟主机终端,删除缓存目录里的所有文件:

rm -rf bootstrap/cache/*

如果没有终端权限,也可以通过FTP/文件管理器直接删除bootstrap/cache下的所有文件(别删目录本身)。

2. 修复Storage目录的权限问题

报错里的Permission denied说明服务器上的storage/logs目录要么不存在,要么没有足够的读写权限:

  • 先手动创建logs目录(如果不存在的话):
mkdir -p storage/logs
  • 然后设置正确的权限,让Web服务器(Apache/Nginx)能读写这些目录:
chmod -R 755 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

注意:有些虚拟主机的Web用户不是www-data,比如可能是apache、nginx或者你的cPanel用户名,如果你不确定,可以联系主机服务商确认,或者尝试用chmod -R 775 storage bootstrap/cache(这个权限在共享主机上更通用)。

3. 在服务器上重新生成缓存

千万不要在本地生成缓存再上传!一定要在服务器环境下重新执行缓存命令,确保读取的是服务器的配置:

php artisan config:clear
php artisan config:cache
php artisan route:clear
php artisan view:clear

执行这些命令前,先确认服务器上的.env文件是正确的——里面的配置应该对应服务器环境,而不是你本地的/opt/lampp/htdocs/protech路径。

4. 检查日志配置是否硬编码了本地路径

打开服务器上的config/logging.php文件,检查日志路径的配置,确保是用Laravel提供的storage_path()辅助函数,而不是硬编码的本地绝对路径:
正确的写法应该是:

'path' => storage_path('logs/laravel.log'),

而不是:

'path' => '/opt/lampp/htdocs/protech/storage/logs/laravel.log',

如果是硬编码的路径,改成相对路径的写法,然后再重新执行一次php artisan config:cache。

完成以上步骤后,刷新你的网站或者再尝试执行缓存清理命令,应该就不会再出现本地路径和权限拒绝的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:43:23