首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >确定PHP脚本的命令行与http执行的规范方法是什么?

确定PHP脚本的命令行与http执行的规范方法是什么?
EN

Stack Overflow用户
提问于 2008-10-06 10:51:04
回答 3查看 42.9K关注 0票数 163

我有一个PHP脚本,它需要确定它是通过命令行还是通过HTTP执行的,主要用于输出格式化。做这件事的规范方法是什么?我本以为它是用来检查SERVER['argc']的,但事实证明这是填充的,即使使用“Apache2.0Handler”服务器API也是如此。

EN

回答 3

Stack Overflow用户

发布于 2010-12-09 06:08:39

这将总是有效的。(如果PHP版本为4.2.0或更高版本)

代码语言:javascript
复制
define('CLI', PHP_SAPI === 'cli');

这使得在脚本的顶部使用它变得很容易:

代码语言:javascript
复制
<?php PHP_SAPI === 'cli' or die('not allowed');
票数 23
EN

Stack Overflow用户

发布于 2012-09-30 01:36:43

下面是Drupal7的实现:drupal_is_cli()

代码语言:javascript
复制
function drupal_is_cli() {
  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
}

但是,使用PHP_SAPI === 'cli'的Drupal8 recommends

票数 10
EN

Stack Overflow用户

发布于 2008-10-06 10:53:32

我认为

代码语言:javascript
复制
$_SERVER['REMOTE_ADDR']

不会从CLI填充。

此外,$_SERVER超级全局中的所有CLI键都不会从HTTP_*填充,或者按照刚才提到的正确方式进行填充:-)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/173851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档