使用$ _SERVER获取webroot

时间:2011-11-07 16:29:28

标签: php apache cakephp

我在bootstrap中的cakephp项目中使用以下代码来定义webroot路径之类的常量。是不是

$_ROOTPATH  = strtolower('http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
$URLPART    = explode('cake',$_ROOTPATH);

define('ROOTPATH',$URLPART[0].'cake/');
define('RESOURCEBASEPATH',$URLPART[0].'resources/');
define('DOCUMENTROOTPATH',substr($_SERVER['SCRIPT_FILENAME'],0,-9));
  1. ROOTPATH代替$ this-> webroot。
  2. DOCUMENTROOTPATH指向实际路径到实际路径,如 /var/www/
  3. 你对此有何看法?欢迎提出任何说明/建议。

5 个答案:

答案 0 :(得分:2)

为什么不使用$_SERVER['DOCUMENT_ROOT']

答案 1 :(得分:1)

您不需要任何变量来获取webroot。 它始终只是/。非常便利。

答案 2 :(得分:1)

关于文件路径,您是否查看了现有的core constants?您可能会发现您需要的大部分文件路径常量都已在那里定义。

例如,您的DOCUMENTROOTPATH与(我相信)WWW_ROOT常量完全相同。

对于网址,CakePHP的Router::url()负责以一致的方式处理所有网址(例如,Controller::redirect()FormHelperHtmlHelper等输出的网址。)

您还可以在需要创建网址的任何地方静态呼叫Router::url()

echo Router::url('/some/random/path');
// output: http://www.example.com/path/to/cake/some/random/path
echo Router::url(array('controller' => 'abc', 'action' => 'xyz'));
// output: http://www.example.com/path/to/cake/abc/xyz

除非我遗漏了某些内容,否则我只会使用上述内容,而不是使用ROOTPATHRESOURCEBASEPATH之类的内容来乱扔你的应用程序。例如,以下方法是等效的:

$this->redirect(ROOTPATH . 'some/place'); // your way
// takes you to: http://www.example.com/path/to/cake/some/place
$this->redirect('/some/place'); // cake way
// takes you to: http://www.example.com/path/to/cake/some/place

echo $this->Html->image(RESOURCEBASEPATH . 'some/image.jpg'); // your way
// outputs: <img src="http://www.example.com/path/to/cake/resources/some/image.jpg" />
echo $this->Html->image('some/image.jpg'); // cake way
// outputs: <img src="http://www.example.com/path/to/cake/img/some/image.jpg" />
echo $this->Html->image('../resources/some/image.jpg'); // cake way
// outputs: <img src="http://www.example.com/path/to/cake/resources/some/image.jpg" />

答案 3 :(得分:0)

我正在使用它(假设我在使用我正在编写此代码的文件的正确文件夹中):

$path = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR;

答案 4 :(得分:0)

这是相当古老的帖子,但万一有人想知道。这是$ this-&gt; webroot,它为您提供了应用程序的webroot。这可以在控制器&amp;观点也是如此。