我有一个PHP脚本,它需要确定它是通过命令行还是通过HTTP执行的,主要是出于输出格式化的目的.做这件事的规范方式是什么?我原以为它是判断SERVER['argc']个,但结果发现这是填充的,即使在使用"Apache2.0Handler"服务器API时也是如此.

推荐答案

使用php_sapi_name()功能.

if (php_sapi_name() == "cli") {
    // In cli-mode
} else {
    // Not in cli-mode
}

以下是文档中的一些相关说明:

php_sapi_name-返回web服务器和PHP之间的接口类型

虽然并非详尽无遗,但可能的返回值包括aolserver、apache、apache2filter、apache2handler、caudium、cgi(直到PHP5.3)、cgi fcgi、cli、cli服务器、连续性、嵌入、isapi、litespeed、milter、nsapi、phttpd、pi3web、roxen、thttpd、tux和webjames.

In PHP >= 4.2.0, there is also a predefined constant, PHP_SAPI, that has the same value as php_sapi_name().

Php相关问答推荐

Laravel 9如何过滤$的项目与结果?

在WooCommerce中执行一次银行电汇确认付款代码

Laravel迁移返回SQL错误,但SQL有效且工作正常

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

将变体设置字段添加到WooCommerce中的特定变量产品

将部分产品排除在WooCommerce的计算附加费之外

在WooCommerce中添加特定产品类型的百分比费用和固定费用

PHP 支持 APNG 文件吗?

调用未定义的方法 mysqli::execute_query()

使用动态地址和动态文件创建zip文件并获取zip文件链接

无法使用 slim 的父级容器

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

如何使用不同的方法编写嵌套连接查询并将两列连接成一列在 laravel 查询生成器中

Shopware 6 AuthControllerDecorator已弃用

WooCommerce – 在新订单邮箱通知中显示产品分类计数

计算组合指数

如何在供应商名称后将自定义徽章添加到商品详情

每个发布请求 Laravel 9 的 CSRF 令牌不匹配

PHP/Laravel 中的自定义时区

通过php在xml文件中添加 node