未定义的数组键 "REMOTE_ADDR" 在拉拉维尔辛烷值



我使用laravel 8。在升级到辛烷之前,我在$_SERVER['REMOTE_ADDR']中获得ip地址。在更改为辛烷后,$_SERVER中没有这样的索引。

我在注册控制器的验证器中使用这个变量,而新用户正在注册到应用程序。

protected function validator(array $data)
{
dd($_SERVER['REMOTE_ADDR'])
}

当我转储$_SERVER我得到这个数组(我隐藏应用程序的详细信息)

"LARAVEL_OCTANE" =>"1"
"APP_BASE_PATH" => "xxx"
"JOURNAL_STREAM" => "xxx"
"PATH" =>"xxx"
"INVOCATION_ID" => "xxx"
"LANG" => "xxx"
"SUPERVISOR_ENABLED" =>"xxx"
"SUPERVISOR_SERVER_URL" => "xxx"
"SUPERVISOR_PROCESS_NAME" =>"xxx"
"APP_ENV" => "xxx"
"PWD" => "xxx"
"PHP_SELF" => "xxx"
"SCRIPT_NAME" => "xxx"
"SCRIPT_FILENAME" =>"xxx"
"PATH_TRANSLATED" => "xxx"
"DOCUMENT_ROOT" => ""
"REQUEST_TIME_FLOAT" => "xxx"
"REQUEST_TIME" => "xxx"
"argv" => array:2 [▶]
"argc" =>"xxx"
"APP_NAME" => "xxx"
"APP_KEY" => "xxx"
"APP_DEBUG" => "xxx"
"APP_LOG_LEVEL" => "xxx"
"APP_URL" => "xxx"
"OCTANE_SERVER" =>"xxx"
"LOG_CHANNEL" => "xxx"
"DB_CONNECTION" => "xxx"
"DB_HOST" => "xxx"
"DB_PORT" => "xxx"
"DB_DATABASE" => "xxx"
"DB_USERNAME" =>"xxx"
"DB_PASSWORD" => "xxx"
"BROADCAST_DRIVER" => "xxx"
"CACHE_DRIVER" => "xxx"
"SESSION_DRIVER" => "xxx"
"SESSION_LIFETIME" => "xxx"
"QUEUE_CONNECTION" => "xxx"
...............

我已经找到解决这个问题的方法了。正如@Rwd评论的那样取代$_SERVER['REMOTE_ADDR']byrequest()->ip()

,它可以正常工作。(在辛烷中,PHP的全局变量不会在请求初始化时被初始化,例如$_ SERVER, $_ POST, $_ Get等。从以下文章中获得详细信息。https://developpaper.com/php-fpm-vs-swoole/)

最新更新