php中正确获取程序路径
首先说说$_SERVER['DOCUMENT_ROOT']
这个变量,这个变量是由apache的配置文件里面的documentroot决定的(当然你要是用的不是apache,那就是由其他服务器决定的),一般情况之下还是可靠的,近日,用到了apache中的alias,然后alias的目录不在virtualhost的documentroot中,于是alias的目录中用$_SERVER['DOCUMENT_ROOT']
来计算文件的引入路径就出错了。
看看几个较流行的框架
Slim
public function root() {
return rtrim($_SERVER['DOCUMENT_ROOT'], '/') . rtrim($this->request->getRootUri(), '/') . '/';
}
Laravel
if ( ! defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
$GLOBALS['laravel_paths']['base'] = __DIR__.DS;
于是slim嗝屁之,laravel依然风骚。由于laravel要求最低是php5.3,而__DIR__
是5.3才有的,那在php之前的版本下使用dirname(__FILE__)
就好了。