当我从命令行运行 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'
,则您正在从命令行调用。
答案2
您可以检查$_SERVER["SHELL"]
或$_SERVER["TERM"]
。它们应该存在于 CLI 中,但由 Web 服务器提供服务时不存在。