如何修改Laravel存储路径至不含laravel目录的public_html路径?
解决Laravel图片存储路径多带
laravel目录的问题 别着急,我来帮你搞定这个路径问题!既然服务商不让用symlink,那咱们直接从Laravel的配置和存储逻辑入手修改,应该就能解决。
1. 修改文件系统配置文件
首先找到Laravel项目里的config/filesystems.php,这是控制存储路径的核心配置文件。你可以直接修改默认的public磁盘,或者单独创建一个专门用于图片存储的磁盘:
'disks' => [ // 保留其他原有磁盘配置... // 方法一:修改默认public磁盘的根路径 'public' => [ 'driver' => 'local', 'root' => '/home/gehops/domains/anyweb.com/public_html/images/', 'url' => env('APP_URL').'/images', 'visibility' => 'public', ], // 方法二:新增一个专门的images磁盘(推荐,避免影响其他存储逻辑) 'images' => [ 'driver' => 'local', 'root' => '/home/gehops/domains/anyweb.com/public_html/images/', 'url' => env('APP_URL').'/images', 'visibility' => 'public', ], ],
2. 调整上传代码的存储逻辑
修改完配置后,确保你上传图片的代码使用了新配置的磁盘。比如:
// 如果用新增的images磁盘 $uploadedPath = $request->file('image')->store('avatars', 'images'); // 如果修改了public磁盘,就用默认的public磁盘 $uploadedPath = $request->file('image')->store('avatars', 'public');
如果需要指定文件名,就用storeAs方法:
$uploadedPath = $request->file('image')->storeAs( 'avatars', 'user_avatar.jpg', 'images' // 对应你配置的磁盘名 );
3. 清除Laravel配置缓存
Laravel会缓存配置文件,修改完后记得清除缓存让新配置生效:
php artisan config:clear
4. 迁移已有图片(可选)
如果之前已经上传了图片在旧路径里,用命令行把文件移到新目录:
mv /home/gehops/domains/anyweb.com/laravel/public_html/images/* /home/gehops/domains/anyweb.com/public_html/images/
这样调整后,所有新上传的图片都会直接存到你想要的目录里,不会再带laravel前缀了。
内容的提问来源于stack exchange,提问作者Vulvec Tomy
相关产品推荐
相关产品推荐

