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

Laravel如何访问局域网内其他电脑/映射网络驱动器的文件?

解决Laravel访问局域网共享文件的问题

问题分析

你当前的配置存在两个核心问题:

  • 映射驱动器(W:/)属于用户级挂载,Laravel运行的服务进程(如IIS应用池、Apache/PHP-FPM进程)通常没有权限访问这类用户专属映射
  • 10.1.101.11/reports不是Windows局域网共享的合法路径格式,必须使用UNC标准路径

正确配置方法

1. 使用UNC路径配置Storage磁盘

局域网共享文件的标准路径为UNC格式:\\服务器IP\共享文件夹名,在PHP配置中需要将反斜杠转义(用双反斜杠\\),或用单引号包裹避免转义。

修改filesystems.php的磁盘配置:

// 替换映射驱动器为对应共享文件夹的UNC路径(推荐方式)
'example1' => [
    'driver' => 'local',
    'root' => '\\\\10.1.101.11\\w_drive_shared', // 替换为W盘对应的实际共享UNC路径
    // 可选:按需配置文件/目录权限
    'permissions' => [
        'file' => [
            'public' => 0644,
            'private' => 0600,
        ],
        'dir' => [
            'public' => 0755,
            'private' => 0700,
        ],
    ],
],

// 直接配置目标共享文件夹
'example2' => [
    'driver' => 'local',
    'root' => '\\\\10.1.101.11\\reports', // 注意双反斜杠转义格式
],

2. 确保服务进程拥有访问权限

Laravel运行的用户必须获得局域网共享文件夹的对应权限:

  • IIS环境:找到对应应用池的身份(默认是IIS AppPool\你的应用池名称),在共享文件夹的「共享权限」和「NTFS权限」中添加该用户,分配读取/写入等所需权限
  • WAMP/XAMPP环境:Apache默认运行用户为SYSTEM或当前登录用户,需确保该用户能正常访问共享文件夹(可手动用该用户身份打开共享验证)
  • 若共享需账号密码验证,在Windows「凭据管理器」中添加共享的账号密码,让服务进程自动获取权限

3. 验证配置有效性

添加测试路由确认访问是否正常:

Route::get('/test-share', function () {
    try {
        $files = Storage::disk('example2')->files();
        return response()->json(['files' => $files]);
    } catch (\Exception $e) {
        return response()->json(['error' => $e->getMessage()], 500);
    }
});

访问该路由,若能返回文件列表则配置成功;若报错,优先检查路径格式和权限设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:10:06