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

Laravel部署至cPanel后图片存储与调用路径不一致问题的解决咨询

嘿,这个问题我太熟悉了!很多人把Laravel项目部署到cPanel时,都会因为调整public目录结构遇到这种存储和访问路径不匹配的问题。别担心,我给你两个实用的解决方案,你选一个适合你的就行:

方案1:直接将图片存储到根目录下的专属文件夹(无需软链)

这个方法最直接,适合不想折腾软链的场景:

  • 第一步,在你的项目根目录(就是现在放index.php的那个目录)下创建一个专门存图片的文件夹,比如叫images(名字随意,只要你记得住)。
  • 第二步,修改你的文件上传代码,把图片直接存到这个文件夹里。比如:
// 处理上传的图片
$image = $request->file('image');
$fileName = uniqid() . '.' . $image->getClientOriginalExtension();
// 用public_path()指向当前根目录,把文件移到images文件夹
$image->move(public_path('images'), $fileName);
// 把存储路径存在数据库里,比如 'images/' . $fileName
  • 第三步,在视图里调用图片时,直接用Laravel的asset()助手函数:
<img src="{{ asset('images/' . $yourImageName) }}" alt="描述文字">

这样存储和调用都在同一个目录下,完美匹配。

方案2:修复Storage软链接(保留Laravel默认存储结构)

如果你习惯用Laravel默认的storage/app/public来存文件,那只需要修复软链接的路径就行:

  • 首先确认config/filesystems.php里的public磁盘配置是正确的:
'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL') . '/storage',
    'visibility' => 'public',
],
  • 因为cPanel面板通常没法直接运行php artisan storage:link命令(或者运行后路径不对),所以手动创建软链接:
    1. 登录cPanel的文件管理器
    2. 找到你的项目根目录(放index.php的目录)
    3. 右键点击空白处,选择「创建软链接」
    4. 链接名称填storage,目标路径填你的storage/app/public的绝对路径(比如/home/你的用户名/laravel项目/storage/app/public,根据你的实际目录调整)
  • 上传代码用public磁盘存储:
// 把图片存储到public磁盘的images目录下
$imagePath = $request->file('image')->store('images', 'public');
// 数据库里存$imagePath即可,比如'images/xxx.jpg'
  • 视图里调用还是用asset()指向storage路径:
<img src="{{ asset('storage/' . $yourImagePath) }}" alt="描述文字">
额外注意事项
  • 一定要检查index.php里的public路径绑定是否正确,确保Laravel能识别当前根目录为public目录:
$app->bind('path.public', function() {
    return __DIR__;
});
  • 给存储图片的文件夹设置合适的权限,一般设为755或者775就够了,千万不要用777,安全性极差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 02:53:12