网络的意图PHP代码我有PHP代码,按地址$_SERVER['DOCUMENT_ROOT'].'/subdir/file.php';
从命令行运行
首先,requires其他PHP文件 - 这是包括物尽其正确的方法?很明显,我不想使用像'../../subdir/file.php';
这样的路径,因为移动文件会破坏它。
但另一个有趣的问题是,如果我通过命令行运行此文件,则不会创建$_SERVER
。我可以通过$_SERVER['DOCUMENT_ROOT'] = '.';
来伪造,但我很好奇,如果这是最佳做法。似乎不是。
编辑:很明显,有很多方法来剥皮这只猫,但我认为最好的做法是定义一个负责include目录的变量(或常量)。如:
define('INC_DIR', $_SERVER['DOCUMENT_ROOT'].'/../includes');
或
if (PHP_SAPI == 'cli') {
$_includes = '../includes';
} else {
$_includes = $_SERVER['DOCUMENT_ROOT'].'/../includes/');
}
并使用整个代码前述变量或常数。