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

Laravel部署后图片存储与访问路径不一致问题咨询

解决Laravel分离部署时图片存储与访问路径不一致的问题

你的问题核心是Laravel默认的public_path()指向项目内的project_folder/public,但asset()方法基于Web根目录public_html生成URL,导致存储和访问路径错位。下面提供两种可行的解决方法:

方法一:自定义public_path()指向public_html(推荐)

修改项目根目录下的bootstrap/app.php,添加代码绑定自定义的公共路径:

$app->bind('path.public', function() {
    return base_path('../public_html');
});

修改后,public_path()会直接返回public_html的绝对路径,你原有的存储代码无需改动,图片会直接存到public_html/images/posts/,和asset()访问的路径完全一致。

方法二:直接指定存储路径到public_html

如果不想修改框架绑定,也可以直接在存储代码里明确目标路径:

$image_name = $post->id . '_' . $image_counter . '.jpg';
// 直接指向public_html下的图片目录
$image->move(base_path('../public_html/images/posts/'), $image_name);

这种方式无需改动框架配置,但如果后续目录结构调整,需要同步修改代码,灵活性稍差。

补充说明

出现该问题的原因是Laravel默认将项目内的public目录作为Web根目录,但你采用了分离部署的方式,将Web根目录替换为public_html,导致框架路径函数与Web服务器根目录不匹配。上述两种方法均是通过对齐存储路径与Web访问路径,解决错位问题。

内容的提问来源于stack exchange,提问作者Sarmed MQ Berwari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:51:05