PHP脚本如何判断是从命令行还是Web服务器调用的?

25 浏览
0 Comments

PHP脚本如何判断是从命令行还是Web服务器调用的?

我正在编写一个作为cron作业执行的小脚本。有没有办法判断这个脚本是从Web服务器调用的,这样我就可以输出
而不是换行符?

0
0 Comments

问题的出现原因:

PHP脚本通过不同的方式被调用,可能是通过Web服务器请求,也可能是通过命令行。在不同的调用方式下,PHP脚本可能需要执行不同的逻辑。因此,需要判断当前PHP脚本是被命令行调用还是Web服务器请求调用。

解决方法:

可以通过检查服务器变量HTTP_USER_AGENT来判断PHP脚本的调用方式。如果HTTP_USER_AGENT变量存在,则说明PHP脚本是通过Web服务器请求调用的;如果HTTP_USER_AGENT变量不存在,则说明PHP脚本是通过命令行调用的。

以下是一个示例代码,用于判断PHP脚本的调用方式:

$newline = (isset($_SERVER['HTTP_USER_AGENT'])) ? "<br />" : "\n";

在上述代码中,通过判断$_SERVER['HTTP_USER_AGENT']变量是否存在来确定调用方式。如果存在,将$newline变量设置为"<br />",表示当前是通过Web服务器请求调用的;如果不存在,将$newline变量设置为"\n",表示当前是通过命令行调用的。

通过判断调用方式,可以在PHP脚本中编写不同的逻辑来适应不同的调用方式,实现更灵活的功能。

0
0 Comments

问题的出现原因是:需要判断一个php脚本是通过命令行还是通过Web服务器调用的。

解决方法是使用PHP内置的变量`PHP_SAPI`,它返回当前PHP脚本的运行环境。如果`PHP_SAPI`的值等于'cli',则表示当前脚本是通过命令行调用的;如果值不等于'cli',则表示当前脚本是通过Web服务器调用的。

下面是一个示例代码,通过判断`PHP_SAPI`的值来执行不同的逻辑:

if (PHP_SAPI === 'cli') {
    // 命令行调用逻辑
    echo "This script is called from command line";
} else {
    // Web服务器调用逻辑
    echo "This script is called from web server";
}

通过以上代码,我们可以根据不同的调用方式执行不同的逻辑操作,实现更灵活的脚本编写。

0