PHP\Laravel 中的符号链接问题

Problem with Symbolic links in PHP\Laravel


我在直接管理员上使用 Laravel 7。我实际上无权访问 Command Line/Terminal,我需要 Symbolic link 存储。

我试过:

Route::get('/foo', function () {
    Artisan::call('storage:link');
});

还有:

symlink('/domains/MyProject.com/LaravelFolder/storage/app/public', '/domains/MyProject.com/public_html');

但是我收到这个错误:

symlink() has been disabled for security reasons

我的 LaravelFolder 放在 public_html 之前。

更新:我意识到托管公司禁用了这个功能;我要求他们启用它,但他们说:这是不可能的。你知道另一种方法吗?

您可以修改public磁盘的根路径直接指向public文件夹。考虑以下代码片段;

/** /config/filesystems.php */

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

请注意,这不是最佳做法。

但我终于解决了这个问题,看起来有点愚蠢但它有效:

在 Ubuntu Linux 中,我尝试创建一个 symlink,就像 Laravel 中的存储符号 link,使用以下命令:

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

然后我压缩了这个符号 link 并上传到我的 public_html 文件夹并且它有效。 我希望它会有所帮助..