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

Laravel Voyager存储链接缺失问题:自定义XAMPP目录结构下的报错

嘿,这个问题我之前碰到过类似的场景——因为你把Laravel的public目录单独放到了XAMPP的htdocs子文件夹,而核心文件和htdocs同级,默认的storage:link命令没法自动识别你自定义的public路径,导致Voyager需要的存储符号链接没创建对。下面给你几个实用的解决办法:

方法一:手动创建符号链接(最直接,适合所有系统)

这是最快的方式,不用改代码,直接根据你的目录结构创建链接就行:

先明确两个关键路径:

  • 源路径:Laravel的storage/app/public目录(和htdocs同级的那个Laravel核心目录里)
  • 目标路径:你的public目录(htdocs/demos/sricargo)下要创建的storage文件夹

Windows系统(XAMPP在Windows)

打开CMD命令提示符,先切换到sricargo目录:

cd C:\xampp\htdocs\demos\sricargo

然后创建软链接(注意路径要对应你的实际结构,这里假设Laravel核心目录和htdocs同级):

mklink /D storage "..\..\..\storage\app\public"

如果怕相对路径出错,直接用绝对路径更稳妥:

mklink /D "C:\xampp\htdocs\demos\sricargo\storage" "C:\xampp\storage\app\public"

Linux/Mac系统(XAMPP在类Unix系统)

打开终端,运行软链接命令:

ln -s ../../../../storage/app/public storage

(从sricargo目录往上三级回到根目录,再进入storage/app/public)
或者用绝对路径:

ln -s /opt/lampp/storage/app/public /opt/lampp/htdocs/demos/sricargo/storage

方法二:修改Laravel配置,让storage:link命令自动识别

如果以后还需要用到storage:link或者其他依赖public路径的命令,可以修改Laravel的配置,让它知道你的public目录在哪里:

  1. 打开Laravel核心目录下的bootstrap/app.php文件
  2. 在创建应用实例的代码后面,添加usePublicPath方法指定你的public目录绝对路径:
    // 示例:Windows路径
    $app->usePublicPath('C:\xampp\htdocs\demos\sricargo');
    // 或者Linux/Mac路径
    $app->usePublicPath('/opt/lampp/htdocs/demos/sricargo');
    
  3. 切换到Laravel核心目录(和app、storage同级的目录),运行官方的链接命令:
    php artisan storage:link
    
    这时候命令就会自动把storage/app/public链接到你自定义的public目录下的storage文件夹了。

验证解决效果

创建完链接后,刷新Voyager仪表盘,"Missing storage symlink"的错误应该就消失了。你可以上传一个测试媒体文件,然后访问http://localhost/demos/sricargo/storage/你的文件名.jpg,如果能正常打开图片,就说明链接没问题了。

额外提醒(Linux/Mac用户)

如果创建链接后还是无法访问媒体文件,可能是权限问题。可以给Laravel的storage目录设置正确的权限:

chmod -R 755 /path/to/laravel/storage
chown -R www-data:www-data /path/to/laravel/storage

(www-data是XAMPP的Apache用户,不同系统可能是apache或者nobody,根据你的实际情况调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:48