为什么我的文件系统路径在本地机器上和在 VPS 上托管时不同?

Why are my filesystem paths differing in local machine and when hosted on VPS?

我在我的控制器中进行了一些存储操作,这是在我的本地机器上运行的代码:

Storage::copy('public/filename.pdf', 'public/sub_directory/filename_'.$var.'.pdf');
Storage::delete('public/filename.pdf');

使用这段代码,我成功地复制了 laravel_root/storage/app/public/ 中的文件,然后将文件复制并重命名为 laravel_root/storage/app/public/subdirectory/,复制后 public/ 中的文件被删除手术。这适用于我的本地机器。

当我将代码推送到登台服务器时,以上路径不起作用,我得到 ERROR: No such file or directory

我通过将在本地机器上工作的路径更改为 :

来实现这个工作
Storage::copy('filename.pdf', 'subdirectory/filename_'.$var.'.pdf');
Storage::delete('job_card.pdf');

我不得不从操作中删除 public/

我的问题是 - 为什么这在本地机器和推送到服务器时会有所不同?

我在本地机器上的 macOS 上是 运行,在登台服务器上是 ubuntu 16。我没有更改任何配置文件。

我会说这与您的文件系统配置有关。

config/filesystems.php 中查找磁盘的根目录。

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => 'your-key',
        'secret' => 'your-secret',
        'region' => 'your-region',
        'bucket' => 'your-bucket',
    ],

],

本地是storage_path('app'),public是storage_path('app/public')