针对图片上传出现 symlink (): Input/output error 的一种解决方案?

因为利用laravel自带的storage:link 和ubuntu环境下建立软链接都无效,这样laravel本身文件配置中的 public 和local 存储方式得到的图片地址无法正常获取。 问题原因可能在于windows 的磁盘写入吧, 试过了很多方法,包括策略组和 sudo操作,基本都无效,无奈之下,只能换一种方式,绕开这个坑。图片直接存在public中,不存入storage文件夹,绕开软连接的建立。贴下修改

修改filestystem.php配置文件中public配置即可

        'default' => env('FILESYSTEM_DRIVER', 'public'),

//        'public' => [
//            'driver' => 'local',
//            'root' => storage_path('app/public'),
//            'url' => env('APP_URL').'/storage',
//            'visibility' => 'public',
//        ],

        'public' => [
            'driver' => 'local',
            'root' => public_path('admin_img'),
            'url' => env('APP_URL').'/admin_img',
            'visibility' => 'public',
        ],

laravel-admin配置文件中admin.php修改存储方式为public

    /*
     * Laravel-admin upload setting.
     */
    'upload' => [

        'disk' => 'public',

        'directory' => [
            'image' => 'images',
            'file'  => 'files',
        ],
    ],

这样就暂时绕开了这个坑。。。。。。。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
xin6841414

遇到同样的问题, 直接用ln命令解决了,项目根目录执行:
ln -s ../storage/app/public public/storage
碰到的试试行不行!

4年前 评论

谢谢咯,试了好多个方法,最终还是用了你的方法

4年前 评论

我刚遇到这个问题 使用 php artisan storege:link ;

ErrorException : symlink(): Input/output error

at /home/vagrant/Code/larabbs/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:252
248| */
249| public function link($target, $link)
250| {
251| if (! windows_os()) {

252| return symlink($target, $link);
253| }
254|
255| $mode = $this->isDirectory($target) ? 'J' : 'H';


可能是环境问题!

4年前 评论

@maogu @雷 计算机配置->window设置->安全策略->本地策略->用户权限分配->创建符号链接->添加Everyone
注:重启电脑才生效 这个是重点,不重启不行

3年前 评论
qingyan233 3年前
zhenming 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!