PHP artisan return 未定义索引:HTTP_USER_AGENT
PHP artisan return Undefined index: HTTP_USER_AGENT
我尝试使用命令提示符在项目文件夹中 运行 php artisan
。但是,此错误不断弹出:
[ErrorException]
Undefined index: HTTP_USER_AGENT
运行 其他项目文件夹中的相同命令(使用 Laravel 4.2 和 5.1)工作正常。
根据我在 Laracast 上看到的内容:任何服务提供商都需要被注释掉。但是,在这个特定项目中,我没有。
您应该验证您的控制器构造函数或 artisan 命令构造函数。它们可能会在 运行 php artisan
时启动,如果您在其中任何一个中直接使用 HTTP_USER_AGENT
或启动任何需要 HTTP_USER_AGENT
的代码,就会出现问题。
终于修好了!
问题是由 routes.php 中的一行引起的。具体来说,代码旨在通过验证用户代理来过滤掉 IE 用户,如下所示:
if(preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false))
所以对于 artisan(通过 CLI 运行),没有 HTTP_USER_AGENT header。这导致了这个错误:
[ErrorException]
Undefined index: HTTP_USER_AGENT
修复非常简单。只需将 isset($_SERVER['HTTP_USER_AGENT']) &&
添加到 if 逻辑中,如下所示:
if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false)))
我尝试使用命令提示符在项目文件夹中 运行 php artisan
。但是,此错误不断弹出:
[ErrorException]
Undefined index: HTTP_USER_AGENT
运行 其他项目文件夹中的相同命令(使用 Laravel 4.2 和 5.1)工作正常。
根据我在 Laracast 上看到的内容:任何服务提供商都需要被注释掉。但是,在这个特定项目中,我没有。
您应该验证您的控制器构造函数或 artisan 命令构造函数。它们可能会在 运行 php artisan
时启动,如果您在其中任何一个中直接使用 HTTP_USER_AGENT
或启动任何需要 HTTP_USER_AGENT
的代码,就会出现问题。
终于修好了!
问题是由 routes.php 中的一行引起的。具体来说,代码旨在通过验证用户代理来过滤掉 IE 用户,如下所示:
if(preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false))
所以对于 artisan(通过 CLI 运行),没有 HTTP_USER_AGENT header。这导致了这个错误:
[ErrorException]
Undefined index: HTTP_USER_AGENT
修复非常简单。只需将 isset($_SERVER['HTTP_USER_AGENT']) &&
添加到 if 逻辑中,如下所示:
if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false)))