PHPスクリプトがシェル(コマンドライン)で実行されているのか、サーバーで実行されているのかを確認するにはどうすればよいですか?
質問する
6237 次
4 に答える
11
php_sapi_name
次の関数を使用します。
if(php_sapi_name() == 'cli')
{
// running from CLI
}
マニュアルから:
PHPが使用しているインターフェースのタイプ(サーバーAPI、SAPI)を説明する小文字の文字列を返します。たとえば、CLI PHPでは、この文字列は「cli」になりますが、Apacheでは、使用される正確なSAPIに応じていくつかの異なる値を持つ場合があります。可能な値を以下に示します。
于 2012-11-26T17:25:54.293 に答える
7
あなたが本当にそれに興味があるなら、ここにシェルソリューションがあります:
ps -ef | grep $scriptname | grep -v grep;
if [[ $? -eq 0 ]]; then
echo "PROCESS IS RUNNING";
fi
説明:
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.
于 2012-11-26T17:27:33.420 に答える
2
$argv
変数の存在を確認できます。
または
これらを確認できます。
if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],"CLI") !== FALSE) {
///
}
于 2012-11-26T17:25:49.567 に答える
1
これは私の製品環境で機能します:
if( substr(php_sapi_name(), 0, 3) == 'cli' ) {
die("You Should Use CGI To Run This Program.\n");
}
于 2012-11-26T17:37:24.657 に答える