【问题标题】:Undefined array key "REMOTE_ADDR" in laravel octanelaravel 辛烷中未定义的数组键“REMOTE_ADDR”
【发布时间】:2021-10-07 08:18:42
【问题描述】:

我使用的是 laravel 8。在升级到 octane 之前,我在 $_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"
  ...............
 

【问题讨论】:

  • 你最好使用 Request 类。请您显示您实际尝试访问该值的代码以及任何相关的路由/控制器代码。
  • 您是直接提供网页还是通过代理提供网页?
  • 感谢@Rwd 的回复,我添加了更多有问题的详细信息。我在验证器中使用此代码
  • @apokryfos 感谢您的回复。我没有使用代理。我在我的注册页面中使用 google reCAPTCHA v3

标签: laravel octane


【解决方案1】:

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

而且它工作正常。 (在octane中,初始化请求时不会初始化PHP的全局变量,如$_SERVER、$_POST、$_Get等。详情见下文https://developpaper.com/php-fpm-vs-swoole/

【讨论】:

    猜你喜欢
    • 2022-11-08
    • 1970-01-01
    • 2021-08-13
    • 2016-02-10
    • 2022-07-06
    • 2019-02-20
    • 1970-01-01
    • 2022-12-03
    • 2021-08-29
    相关资源
    最近更新 更多