【问题标题】:Laravel php artisan produces errorLaravel php artisan 产生错误
【发布时间】:2017-12-22 11:36:31
【问题描述】:

我已经集成并参与了一个 Laravel 5.4 项目。我实际上是正确配置了这个,php artisan 命令之前工作得很好。但是在开发时间之间(我已经使用 laravel 实现了计划任务并且不确定在该问题出现之后)它在 php artisan 命令上产生 m 错误。谁能帮我解决这个问题。

以下是任何工匠命令的命令错误日志

PHP 致命错误:未捕获 Symfony\Component\Debug\Exception\FatalThrowableError:类型错误: 参数 2 传递给 Illuminate\Routing\UrlGenerator::__construct() 必须是 Illuminate\Http\Request 的实例,给定 null,调用 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php 在第 60 行 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php:103

Stack trace:
#0 /var/www/html/projrct/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(60):

Illuminate\Routing\UrlGenerator->__construct(Object(Illuminate\Routing\RouteCollection), 空值) #1 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Container/Container.php(290): Illuminate\Routing\RoutingServiceProvider->Illuminate\Routing{closure}(Object(Illuminate\Foundation\Application)) #2 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Container/Container.php(746): Illuminate\Container\Container->Illuminate\Container{close in /var/www/html/project/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php 在第 103 行

【问题讨论】:

  • 请不要包含错误信息的截图!以正确的格式将它们复制并粘贴到您的问题中。
  • @milo526 感谢您的快速回复,我已经完成了更改。
  • 我不是工匠错误,我认为您的路由或控制器文件中的某处有错误语法
  • 您是否为计划任务创建了任何CommandController(用于计划任务)文件?
  • @Mohammad Alfaz 是的,我是。我在 app/Console/Commands/Sample.php 下创建了计划任务并创建了命令类

标签: laravel laravel-5 laravel-artisan


【解决方案1】:

请确保您没有在配置文件中使用任何 url() 或 assets() 或其他辅助函数

【讨论】:

  • 是的,这正是我发现它并忘记在这里更新的原因。无论如何,感谢您的回复。
  • 当我寻找解决方案时,你救了我兄弟。这个技巧也适用于 laravel 7.X 谢谢!!!
【解决方案2】:

我的 filesystem.php 中的案例 url() 辅助函数导致了这个问题。我删除了它,一切正常。

【讨论】:

  • 我在配置文件中有相同的内容。
【解决方案3】:

注释掉url() 和asset() 调用的另一种替代解决方案是在运行时检查环境:

return [
    'URL' => app()->runningInConsole() ? '' : url(''),
    ...
];

【讨论】:

  • 这是处理此错误的正确方法,避免您在每次希望使用 artisan 时评论 url 函数调用
  • 最好的办法耶!
  • 你拯救了我的一天!谢谢!
  • 这应该是选择的答案。我需要为将通过 emai 发送的图像设置 url 路径。我无法对其进行硬编码,因为它不适用于本地/暂存环境。这个解决方案就像一个魅力。
【解决方案4】:

如果你真的需要这个函数在你的配置中,你可以使用PHP_SAPI 要检查应用程序运行 HTTP 或 CLI 的天气,

'redirect'  =>  PHP_SAPI === 'cli' ? false : url('synchronise')

【讨论】:

    【解决方案5】:

    我发现了问题所在,当您运行任何 artisan 命令时,您应该避免在任何 config 文件中使用 helper 函数。只需注释这些并在运行取消注释您的 config 文件后尝试运行 artisan 命令。

    //in config/'any_file.php'
    return [
       'name'   => 'Larvel',
       'url'    => url('/')
    ];
    
    //just change and uncomment url() helper
    return [
       'name'   => 'Larvel',
        //'url' => url('/')
    ];
    

    【讨论】:

      【解决方案6】:

      当我在 Admin LTE 的配置文件 (adminlte.php) 中使用资产时,我遇到了同样的问题。

      请在像这样在配置文件中使用 artisan 命令时评论您的资产、url

      [
          'type' => 'js',
          'asset' => false,
           // 'location' => asset('js/waitme/waitMe.min.js'),
      ],
      

      【讨论】:

        猜你喜欢
        • 2023-01-28
        • 2017-03-20
        • 2016-01-29
        • 2016-05-14
        • 2021-04-09
        • 2018-08-04
        • 2016-10-23
        • 2014-05-10
        • 2016-10-14
        相关资源
        最近更新 更多