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

如何在共享托管线上服务器中正常显示Laravel应用上传的图片

问题根因

本地环境Laravel默认的公开目录是项目根目录下的public,你部署到共享主机后,将对外可访问的资源放到了public_html,核心代码放到了main目录,Laravel默认的路径配置没有同步更新,导致:

  • 上传的图片被存到了main/public/upload目录下,不在对外可访问的public_html里
  • 视图生成的图片访问路径和实际存储路径不匹配

解决方案

按顺序操作即可解决:

  1. 绑定正确的公开目录路径
    打开main/bootstrap/app.php文件,在末尾添加以下代码,将Laravel的公开目录指向你实际的public_html:
$app->bind('path.public', function() {
    // 请根据你main和public_html的实际层级调整路径,以下是两者同级时的配置
    return realpath(__DIR__.'/../../public_html');
});
  1. 修正站点域名配置
    打开main/.env文件,将APP_URL参数修改为你的线上站点实际域名,比如:
APP_URL=https://www.your-domain.com
  1. 调整目录权限
    将public_html/upload目录的权限设置为755,保证web服务器拥有该目录的读取、写入权限,共享主机可直接在文件管理器中右键修改权限。
  2. 迁移已上传的历史图片
    如果之前已经上传过图片,把main/public/upload目录下的所有文件移动到public_html/upload目录下,旧图片即可正常访问。
  3. (可选)优化资源路径生成
    将视图中生成图片路径的url()辅助函数替换为更适合静态资源的asset(),同时修正你代码里重复写width的样式问题:
<img src="{{ (!empty($portfolio->image))? asset('upload/portfolio_images/'.$portfolio->image):asset('upload/no_image.jpg') }}" style="width: 60px; height: 60px;">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:07