在我的网络应用程序中,我有以下常量:
//set global path if not yet set
if(!defined('FILE_ROOT_PATH')){
define('FILE_ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
}
所以代码是可移植的,我可以包含/需要绝对路径。
现在有一些 PHP 文件必须可以从 CLI 和 CGI 执行,当然 $_SERVER 在 CLI 中不可用。
所以我所做的是在使用 CLI 和 CGI 执行的那些特殊文件中将其更改为以下代码:
//set global path if not yet set and set it via dirname for CLI
if(!defined('FILE_ROOT_PATH') && strlen($_SERVER['DOCUMENT_ROOT'])){
define('FILE_ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
}else{
define('FILE_ROOT_PATH', dirname(dirname(__FILE__)));
}
因此 CGI 将执行第一个“定义”,而 CLI 将执行第二个。
这样做安全吗?在 CLI 上执行时,CGI 不会“覆盖”常量,对吧?谢谢你的想法。