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 产生错误的主要内容,如果未能解决你的问题,请参考以下文章
laravel php artisan migrate 错误(超时)