Laravel php artisan 产生错误

Posted

技术标签:

【中文标题】Laravel php artisan 产生错误【英文标题】:Laravel php artisan produces error 【发布时间】: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\Routingclosure(Object(Illuminate\Foundation\Application)) #2 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Container/Container.php(746): Illuminate\Container\Container->Illuminate\Containerclose in /var/www/html/project/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php 在第 103 行

【问题讨论】:

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

【讨论】:

以上是关于Laravel php artisan 产生错误的主要内容,如果未能解决你的问题,请参考以下文章

“ php artisan”根本不产生任何输出(!!)

Laravel php artisan 显示 JWT 错误

Laravel Php Artisan 服务错误

laravel php artisan migrate 错误(超时)

运行任何 php artisan 命令时出现 PHP laravel 错误

为啥我收到 Laravel php artisan 迁移错误?