【问题标题】:Symlink(): no such file or directory because public folder is in a different directorySymlink():没有这样的文件或目录,因为公用文件夹位于不同的目录中
【发布时间】:2018-08-09 14:22:21
【问题描述】:

我正在开发一个应用程序,并希望将图像上传到我的应用程序。现在,当我想为我的文件创建符号链接时,我收到以下错误:

ErrorException : symlink(): No such file or directory

Exception trace:
symlink("/home/user/private/application/storage/app/public", "/home/user/private/application/public/storage")

我知道这是什么原因,但我不知道如何解决和/或有解决方法。

我的公用文件夹位于我的 html_root 目录中,而应用程序的其余部分位于我的 html_root 之外的目录中。在这种情况下/home/user/private/application

当我使用php artisan storage:link 时,它会尝试在我的“私人”目录中查找公用文件夹,但由于我的公用文件夹位于 html_root 中而无法找到。

【问题讨论】:

  • 如果你改变了 Laravel 的文件夹结构,你不能指望依赖该结构的函数能正常工作。在这种情况下,我会查看 storage:link 命令 (Illuminate\Foundation\Console\StorageLinkCommand) 的代码,复制到自定义命令并根据需要进行修改。
  • 由于只有公共内容应该在 html_root 中,我认为将其余内容放在另一个目录中也很好(出于结构目的)。

标签: laravel laravel-5 laravel-storage


【解决方案1】:

通过将我的 html_root 内容放回/home/user/private/application 中的私人文件夹并创建指向我的/home/user 的公用文件夹的符号链接并将/home/user/public 文件夹重命名为/home/user/html_root(并保留符号链接)解决了问题完好无损)。

所以我保留了官方的 Laravel 目录结构并制作了公用文件夹的虚假(符号链接)。

有了这个,我可以正常使用php artisan storage:link,而无需创建自定义命令。

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2019-07-19
    • 2020-03-01
    • 1970-01-01
    • 2021-06-24
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多