哪种方法检测php脚本的运行模式更可靠


Which method to detect run mode of php script is more reliable?

我现在了解如何检测php脚本在cli或web服务器模式下运行的天气:

if (defined('STDIN'))

或:

if (isset($argc))

它们是同样可靠还是其中一个更可靠?

两者都没有。检查从php_sapi_name()返回的值。

由于缺少HTTP请求,将不会设置$_SERVER['REQUEST_METHOD']。不过,我认为defined('STDIN')或isset($argc)也是可靠的。如果由我决定,我可能会使用defined("STDIN"),因为我可以想象有人不小心将值设置为$argc。

上面的php_sapi_name函数似乎是另一种(最可靠的?)确定这一点的方法,尽管我确实认为阅读所有的gotcha是个好主意:记住,不同的服务器会给出不同的答案。