在CLI模式下, getenv('HOSTNAME')正确返回HOSTNAME环境variables,但在脚本中调用时返回FALSE 。
为什么? 我如何获得脚本中的HOSTNAMEvariables?
环境variables强制.NET应用程序运行为32位
在Windows上__LP64__?
在shell中导出variables值
Linux Mint – 永久添加环境variables
在linux中定义可以在PHP中访问的variables
HOSTNAME不是一个CGI环境变量,因此在正常的PHP脚本中不存在。
但是你也可以使用
$hostname = `hostname`; // exec backticks
或者阅读系统配置文件:
$hostname = file_get_contents("/etc/hostname"); // also only U*ix
但是大多数PHP脚本应该只使用$_SERVER["SERVER_NAME"]或客户端请求的$_SERVER["HTTP_HOST"]
HOSTNAME在Apache使用的环境中不可用,但通常在CLI使用的环境中可用。
对于PHP> = 5.3.0使用这个 :
$hostname = gethostname();
对于PHP <5.3.0但是> = 4.2.0使用这个 :
$hostname = PHP_uname('n');
对于PHP <4.2.0使用这个:
$hostname = getenv('HOSTNAME'); if(!$hostname) $hostname = trim(`hostname`); if(!$hostname) $hostname = exec('echo $HOSTNAME'); if(!$hostname) $hostname = preg_replace('#^w+s+(w+).*$#','$1',exec('uname -a'));
您的环境很可能在web服务器或PHP-fcgi / fpm启动脚本中清除,因此有关启动帐户的敏感信息不会泄漏到Web服务器。
我想你需要HTTP_HOST ,然后在CLI模式下访问它时是空的。
尝试这样的事情也许?
function getHostName() { //if we are in the shell return the env hostname if(array_key_exists('SHELL',$_ENV)) { return getenv('HOSTNAME'); } return $_SERVER['SERVER_NAME']; }
还有一个ENV变量可以通过<?PHP print_r($_ENV); ?> <?PHP print_r($_ENV); ?> 。 但是我得到了同样的结果:cli比服务器有更多的变量,但是它必须是配置问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。