在 PHP 中,如何检测代码是否从命令行运行?

在 PHP 中,如何检测代码是否从命令行运行?

当我从命令行运行 PHP 脚本时,我收到以下通知。我推测原因是这些变量(如 SERVER_NAME)在没有浏览器的情况下运行时不适用。

在我的代码中,我如何检测它是从命令行运行并跳过那些行,这样我就不必看到这些通知?

我不想通过管道传输到 /dev/null 来阻止这些通知,我宁愿增强 PHP 代码。

david@ubuntu:/var/www/user$ php cron_email.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Notice:  Undefined index: SERVER_NAME in /var/www/user/codestart.php on line 14
PHP Notice:  Undefined index: REMOTE_ADDR in /var/www/user/codestart.php on line 97
PHP Notice:  Undefined index: REQUEST_URI in /var/www/user/codestart.php on line 99
PHP Notice:  Undefined index: HTTP_REFERER in /var/www/user/codestart.php on line 100
PHP Notice:  Undefined index: REQUEST_METHOD in /var/www/user/codestart.php on line 101
PHP Notice:  Undefined index: HTTP_USER_AGENT in /var/www/user/codestart.php on line 102

答案1

检查php_sapi_name()。如果是=='cli',则您正在从命令行调用。

http://php.net/manual/en/function.php-sapi-name.php

答案2

您可以检查$_SERVER["SHELL"]$_SERVER["TERM"]。它们应该存在于 CLI 中,但由 Web 服务器提供服务时不存在。

相关内容