PHP:确定从何处启动脚本


PHP: determining from where a script was launched

我有一个脚本,可以与cron, HTTP请求(浏览器)或从另一个脚本启动。如何确定从何处启动脚本?

您可以查看一些信息来查找:

常量PHP_SAPI将告诉您正在运行哪个PHP解释器/接口-常见的SAPI的名称在php_sapi_name

的页面上记录。

对于命令行脚本,您应该能够通过组合使用posix_isatty函数和检查$_SERVER['TERM']

是否存在来实现您想要的功能。

解决这个问题最简单的方法是向脚本传递一个参数。这将使您能够高度控制信息的格式,并且(相当)安全。

不确定,这是你想要的吗?

Cron:

php -q /dir/my_script.php cron

HTTP:

http://dir/my_script.php?arg=web
PHP:

if (!empty($argv[0])) 
{
    echo "local";
} 
elseif(isset($_GET['arg']))
{
    echo "web";
}
else
{
    echo "Others"
}