$ _ENV ['CLIENTNAME'] == 'Console'のようなものを試しましたが、それは特定のOSでのみ機能するようです(LinuxではなくWindowsで機能します)。
!empty($ _ ENV ['Shell'])を試しましたが、常に機能するとは限りません...
すべてのOS /環境で機能するこれを確認する方法はありますか?
php_sapi_name()
を使用します
PHPが使用しているインターフェイス(サーバーAPI、SAPI)のタイプを説明する小文字の文字列を返します。たとえば、CLI PHP 「cli」に対して、Apacheでは、使用される正確なSAPIに応じていくつかの異なる値を持つ場合があります。
例えば:
$isCLI = ( php_sapi_name() == 'cli' );
定数PHP_SAPI
を使用することもできます
チェックしてください http://php.net/manual/en/features.commandline.php#105568 "PHP_SAPI"定数
<?php
if (PHP_SAPI === 'cli')
{
// ...
}
?>
これは古い質問ですが、記録として、User-AgentヘッダーなしでHTTPリクエストが着信し、PHPは、この場合、HTTP_USER_AGENTを自動的に定義しません。
if ($argc > 0) {
// Command line was used
} else {
// Browser was used
}
$ argcは、コマンドラインに渡される引数の量を調整します。 php page.phpを使用するだけで、$ argcは1を返します
ブラウザでpage.phpを呼び出すと、$ argcはNULLを返します
1つの解決策は、STDINが定義されているかどうかを確認することです。
if (!defined("STDIN")) {
die("Please run me from the console - not from a web-browser!");
}