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

部署至Plesk后storage目录图片无法显示问题求助

解决Plesk部署Laravel后Storage图片无法显示的问题

核心问题分析

问题大概率是网站根目录设置错误或存储软链接路径不匹配导致的,Laravel要求网站根目录指向项目的public文件夹,同时public/storage软链接必须正确指向storage/app/public。

解决方案步骤

1. 修正Plesk的网站根目录设置

登录Plesk后台,找到对应域名的「主机设置」,将文档根目录修改为:
/home_directory/public_html/my_project/public

这是关键:Laravel的入口文件(index.php)在public目录下,只有将网站根指向这里,路由和静态资源访问才会正常。

2. 重新创建正确的存储软链接

之前通过路由创建的链接可能因执行目录错误导致路径失效,推荐两种方式修复:

方式一:通过Plesk终端执行命令

  1. 进入项目根目录:
    cd /home_directory/public_html/my_project
    
  2. 执行存储链接命令:
    php artisan storage:link
    

方式二:修改路由确保执行目录正确

如果无法使用终端,修改你的路由代码,强制切换到项目根目录后再执行命令:

Route::get('/foo', function () {
    chdir(base_path()); // 切换到Laravel项目根目录
    Artisan::call('storage:link');
    return '存储链接已重新创建';
});

访问你的域名/foo执行后,删除该路由避免安全风险。

3. 验证软链接与路径

  • 检查public_html/my_project/public目录下是否存在storage软链接,查看其指向路径应为../storage/app/public。
  • 若软链接指向错误,手动删除后重新执行storage:link命令。

4. 检查目录权限

确保以下目录权限正确:

  • storage/app/public:权限设置为755
  • public/storage:权限设置为755
  • 所有图片文件权限设置为644

权限不足会导致web服务器无法读取图片文件,Plesk中可通过文件管理器右键目录/文件修改权限。

5. 验证图片访问URL

你的代码中生成的URL逻辑是正确的:

$project->cover_image = url('storage', $coverImagePath);

当网站根指向public目录后,url('storage')会正确指向public/storage软链接,从而访问到storage/app/public下的图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:38:23