如何使用Laravel获取服务器IP

时间:2016-12-21 08:24:53

标签: laravel

使用Laravel,我可以使用request()->ip()获取客户端IP。

是否有 Laravel内置方式来获取服务器IP?或者它是“不可能的”(与SERVER_ADDR可靠性相同的问题)

7 个答案:

答案 0 :(得分:11)

您可以使用请求对象:

request()->server('SERVER_ADDR');

或者你可以使用标准的PHP方式:

$_SERVER['SERVER_ADDR'];

答案 1 :(得分:2)

$_SERVER['SERVER_ADDR']; for server ip
$_SERVER['SERVER_PORT']; for server port

答案 2 :(得分:1)

Request::server('SERVER_ADDR'):)

网址参考:https://laravel.com/api/5.3/Illuminate/Http/Request.html

答案 3 :(得分:0)

对不起,为什么对我来说laravel 5.4才有效:

ui <- fluidPage(
  title = "TestApp",
  h1("Test Application"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins", "Bins", 2, 20, 1, value = 10)
    ),
    mainPanel(
      fluidRow(
          div(id="p1", uiOutput("plotPanel1")),
          div(id="p2", uiOutput("plotPanel2"))
      )
    )
  ),
  tags$head(
    tags$style(HTML("
      @media screen and (min-width: 1000px) {
        #plotPanel1 {
          display: none;
        }

        #plotPanel2 {
          display: block;
        }
      }

      @media screen and (max-width: 1000px) {
        #plotPanel1 {
          display: block;
        }

        #plotPanel2 {
          display: none;
        }
      }
      "
    ))
    )
)
server <- function(input, output, session){
  plot1 <- reactive({
    ggplot(lm(mpg ~ ., data = mtcars), aes(.resid)) +
      geom_histogram(bins = input$bins)
  }) 
  plot2 <- reactive({
    ggplot(lm(UrbanPop ~ ., data = USArrests), aes(.resid)) +
      geom_histogram(bins = input$bins)
  }) 
  plot3 <- reactive({
    ggplot(lm(uptake ~ ., data = CO2), aes(.resid)) +
      geom_histogram(bins = input$bins)
  })

  output$plotPanel1 <- renderUI({
    tagList(
      tabsetPanel(
        tabPanel(
          "plot1",
          renderPlot(plot1())
        ),
        tabPanel(
          "plot2",
          renderPlot(plot2())
        ),
        tabPanel(
          "plot3",
          renderPlot(plot3())
        )
      ) 
    )
  })
  output$plotPanel2 <- renderUI({
    tagList(
      fluidRow(
        column(
          4,
          renderPlot(plot1())
        ),
        column(
          4,
          renderPlot(plot2())
        ),
        column(
          4,
          renderPlot(plot3())
        )
      ) 
    )
  })
}

runApp(shinyApp(ui, server))

但返回NULL

和两者

request()->server('SERVER_ADDR');

这取决于我使用内置服务器或是我的应用程序的设置问题? 感谢

答案 4 :(得分:0)

如果使用的是IIS,则只能使用来获取服务器IP

$ _ SERVER ['LOCAL_ADDR']

如果是LINUX,请使用:

$ _ SERVER ['SERVER ADDR'];

/** ServerIP Check **/
if(!isset($_SERVER['SERVER_ADDR']){ $_SERVER['SERVER_ADDR'] = $_SERVER['LOCAL_ADDR']; }

/** get SERVER IP **/
!isset($_SERVER['SERVER_ADDR']))?$_SERVER['LOCAL_ADDR']:$_SERVER['SERVER_ADDR']

答案 5 :(得分:0)

您可以在服务器上使用这种方式。

$_SERVER['SERVER_ADDR'];

但是您不能在本地访问SERVER_ADDR索引。它将通过Undefined index: SERVER_ADDR错误。就我而言,我会遇到此错误。

更好的解决方案是使用 .env 文件中的变量,该变量也将在本地和服务器上运行。

像这样在.env文件中定义一个变量。您可以输入任何想要的名字。

SERVER_ADDR = 127.0.0.1

注意:请注意,SERVER_ADDR的值应为127.0.0.1localhost才能获取服务器地址值。

现在您可以像这样访问此变量:

env('SERVER_ADDR');

答案 6 :(得分:-1)

这也给你IP

request()->getHost();