海滨擎蟹

laravel 命令 storage:link 报错 Call to undefined function Illuminate\Filesystem\symlink()

部署一个基于 Dcat-admin 后台开发的项目,在执行 php aritsan storage:link 命令来创建 public/storage 符号链接(软链)时报错了:


   Error 

  Call to undefined function Illuminate\Filesystem\symlink()

  at vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:355
    351▕      */
    352▕     public function link($target, $link)
    353▕     {
    354▕         if (! windows_os()) {
  ➜ 355▕             return symlink($target, $link);
    356▕         }
    357▕ 
    358▕         $mode = $this->isDirectory($target) ? 'J' : 'H';
    359▕ 

      +13 vendor frames 

  14  artisan:35
      Illuminate\Foundation\Console\Kernel::handle()

看到是 symlink() 未定义报错,一开始还比较迷茫,本地似乎没有遇到过这个错误。

百度看到有些回答里说是符号链接已经存在,查看了一下并没有。并且我在修复问题之后重复执行命令,已存在的报错是这样的:


   ERROR  The [public/storage] link already exists.  

因为使用的是宝塔面包安装的 PHP 和 Nginx 的服务软件。对于 laravel 项目需要做的一些事情基本了然:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

回顾整个过程,猜测是 PHP 的问题。查看到禁用函数里有一个 symlink,删除禁用后,再次执行生成符号链接,成功!

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »