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

  • 本文关键字:服务器 命令行 PHP php
  • 更新时间 :
  • 英文 :


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

有没有办法从命令行知道服务器的名称?

我尝试php_uname("n")按照本讨论中的建议从命令行使用 PHP 服务器名称。但它对我不起作用,它返回我的用户名而不是服务器的名称。

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

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

好吧,你需要知道 PHP 中的 SAPI 之间存在一些差异,当你在 Web 浏览器中运行 PHP 脚本时,你使用的是 HTTP 服务器 SAPI( Apache2 或 nginx 或其他什么(,所以 $_SERVER 变量中返回的数据将取决于 Web服务器本身将抛给 PHP 的标头, 在终端中,您正在运行 CLI SAPI 下的 PHP,可以这么说是无服务器的,除非您使用内置的 php 服务器

看看 $_SERVER 手册页 :-

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

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


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

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

干杯!

最新更新