我现在正在做这样的事情:
if (empty($_SERVER['SERVER_NAME'])) {
// the script is run by a Cron job
} else {
// the script is run by a HTTP request
}
在某些情况下会出错吗?更具体地说,$_SERVER['SERVER_NAME']总是由Apache设置的吗?我知道$_SERVER中的一些变量,如$_SERVER['REMOTE_ADDR'],可能会被客户端污染。
有什么建议吗?
此外,$_SERVER['SERVER_NAME']取决于服务器设置,但应始终进行设置。
来自Apache文档:
如果未指定ServerName,则服务器会尝试推断主机名。如果没有端口在ServerName中指定,则服务器将使用传入请求。为了获得最佳的可靠性和可预测性应使用ServerName指定明确的主机名和端口指令。
尝试内置php函数php_sapi_name
它返回web服务器和PHP 之间的接口类型
或者,你可以使用
__FILE__ with dirname(__FILE__) or
$_SERVER['SCRIPT_NAME']
以标识当前正在执行的php脚本的路径名。将其存储在一个变量中,并应用linux grep
命令来验证它是否存在于cron位置/usr/etc/crontab
中