PHP-命令行中的服务器名称

时间:2018-08-29 08:20:29

标签: php

显然,$_SERVER['SERVER_NAME']仅在从浏览器执行php脚本时设置。

有什么办法可以从命令行知道服务器的名称吗?

我按照本讨论PHP Server Name from Command Line的建议尝试了php_uname("n")。但这对我不起作用,它返回我的用户名,而不是服务器的名称。

3 个答案:

答案 0 :(得分:2)

从命令行执行脚本时不涉及“服务器”。您只是在计算机上运行程序。该机器本身不与任何域名相关联。一台机器可以运行多个Web服务器,每个Web服务器负责多个域。因此,$_SERVER['SERVER_NAME'](来自Web服务器的配置)(例如Apache的ServerName指令)仅在传入HTTP请求的上下文中才有意义。

您需要手动配置/告诉脚本应该在哪个域上工作,没有上下文就无法检测到它。

答案 1 :(得分:0)

好吧,您需要知道PHP中的SAPI有所不同,当您在网络浏览器中运行PHP脚本时,您正在使用 HTTP Server SAPI(Apache2或nginx或),因此$ _SERVER变量中返回的数据将取决于Web服务器本身将向PHP抛出的标头,而在终端中,您正在CLI SAPI下运行PHP,这是无服务器的,可以说,除非您使用built-in php server

看看$ _SERVER手册页:-

  

$_SERVER是一个包含标题,路径,   和脚本位置。该数组中的条目由网络创建   服务器。不能保证每个Web服务器都会提供任何   这些;服务器可能会省略某些服务器,或提供此处未列出的其他服务器。   也就是说,这些变量中有很多是   »CGI / 1.1规范,因此您应该可以期待这些。

这是再一次表示-$ _SERVER变量将保存的数据将取决于 Web服务器将返回/抛出的信息。


作为解决方法,您可以检查脚本是否在CLI SAPI下运行,然后设置一些custom values for the $_SERVER变量

答案 2 :(得分:-1)

使用print_r($ _ SERVER)查看服务器变量上的所有属性。也许另一个可以满足您的需求。

干杯!