【问题标题】:Problem with Symbolic links in PHP\LaravelPHP\Laravel 中的符号链接问题
【发布时间】:2020-10-13 21:54:41
【问题描述】:

我在 Direct 管理员上使用 Laravel 7。我实际上无法访问命令行/终端,我需要一个存储的符号链接。

我试过了:

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 之前。

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

【问题讨论】:

    标签: php laravel symlink laravel-7 shared-hosting


    【解决方案1】:

    但我终于解决了这个问题,这似乎有点愚蠢,但它确实有效:

    在 Ubuntu Linux 中,我尝试使用以下命令创建一个符号链接,类似于 Laravel 中的存储符号链接:

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

    然后我压缩了这个符号链接并上传到我的 public_html 文件夹,它就可以工作了。 我希望它会有所帮助..

    【讨论】:

      【解决方案2】:

      您可以修改public磁盘的根路径直接指向公用文件夹。考虑下面的sn-p;

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

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

      【讨论】:

      • 有趣的是,我只需要让 Laravel 在 Docker 容器 (Laravel Sail) 中通过 Octane (swoole) 运行,以提供在存储路径中符号链接的静态资产。如果公共存储路径保持符号链接,这将导致符号链接中的符号链接 - Octane 根本不喜欢那样。将根目录直接移动到公用文件夹,效果很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2019-07-28
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多