如何检查PHP脚本是否由shell运行

时间:2012-11-26 17:23:48

标签: php

  

可能重复:
  In php, how to detect the execution is from CLI mode or through browser?

如何通过Shell(命令行)或服务器检查PHP脚本是否正在运行?

4 个答案:

答案 0 :(得分:9)

使用php_sapi_name功能:

if(php_sapi_name() == 'cli')
{
    // running from CLI
}

来自Manual

  

返回一个小写字符串,描述PHP正在使用的接口类型(Server API,SAPI)。例如,在CLI PHP中,此字符串将为“cli”,而对于Apache,它可能具有多个不同的值,具体取决于所使用的确切SAPI。可能的值列在下面。

答案 1 :(得分:5)

如果您真的对此感兴趣,请参阅shell解决方案:

ps -ef | grep $scriptname | grep -v grep;
if [[ $? -eq 0 ]]; then
    echo "PROCESS IS RUNNING";
fi

Explination:

ps -ef            ## lists all running processes
grep $scriptname  ## keep only the process with the name we suppply
grep -v grep      ## the previous grep will show up in the ps -ef so this prevents false positives.  

if [[ $? -eq 0 ]]; then
    echo "PROCESS IS RUNNING";
fi                    ## if the last line returns something then process is running.  

答案 2 :(得分:2)

您可以检查是否存在$argv变量。

或者

您可以查看以下内容:

if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],"CLI") !== FALSE) {
 ///
}

答案 3 :(得分:1)

这适用于我的产品环境:

if( substr(php_sapi_name(), 0, 3) == 'cli' ) {
    die("You Should Use CGI To Run This Program.\n");
}