如何在core.php中了解webroot

时间:2013-03-25 01:57:17

标签: cakephp

我正在使用CakePHP 2.3.1。

我们的服务器在一台服务器上有一些独立的应用程序所以我想更改Cookbook之后的session.cookie_path设置:

Configure::write('Session', array(
    'defaults' => 'php',
    'ini' => array(
        'session.cookie_path' => '/app/dir'
    )
));

我可以用它成功改变它。但这是一个问题。我需要动态地将session.cookie_path值设置为webroot(没有字符串文字值,例如'/app/dir')。

我尝试在this Q&A之后使用$this->webroot,但当然它不起作用,因为文件app/Config/core.php中没有控制器。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我意识到有一个php变量可用:$_SERVER['REQUEST_URI']。 所以我可以解决问题。

$requestURI = $_SERVER['REQUEST_URI'];
$webroot = preg_replace('/(^\/[^\/]+\/).*$/', '$1', $requestURI);
//echo $webroot;
Configure::write('Session', array(
    'defaults' => 'cake',
    'ini' => array(
        'session.cookie_path' => $webroot   // looks like '/app/'
    )
));

但是这个解决方案没有足够的可重用性:它不适用于位于更深层目录中的应用程序,例如/apps/app1/

我还在等待更好的解决方案。