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__)就好了。

标签: none

添加新评论