显然,$_SERVER['SERVER_NAME']
仅在从浏览器执行php脚本时设置。
有什么办法可以从命令行知道服务器的名称吗?
我按照本讨论PHP Server Name from Command Line的建议尝试了php_uname("n")
。但这对我不起作用,它返回我的用户名,而不是服务器的名称。
答案 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)查看服务器变量上的所有属性。也许另一个可以满足您的需求。
干杯!