Joomla“JPath check”错误随机弹出

时间:2013-08-11 02:01:10

标签: php joomla relative-path

我正在使用Joomla 3.1.1,并且我启用了SEF和URL重写,一切都运行良好。

当我尝试访问我的网站目录(例如

)时,我的问题就出现了
www.mywebsite.com/myfolder

由于URL重写,我一直收到错误消息。所以我解决了这个问题,只为该目录输入了一个.htaccess文件,我终于能够访问它了但是现在当我尝试运行代码php时我不断收到这个错误,它随着时间的推移而来,似乎是24小时因为我现在正在开发我的第三天。

JPath::check Use of relative paths not permitted

如果joomla阻止访问很棒的目录,那么有没有办法创建像我可以允许访问的目录白名单

也不知道它是否有所不同,但是当我运行www.mywebsite.com/myfolder时 我正在调用一个有

的php文件
include_once  'another.php';

another.php文件的内容是

define( '_JEXEC', 1 ) or die('restricted');
define( 'JPATH_BASE', dirname(__FILE__) . '/../');
require_once ( JPATH_BASE . '/includes/defines.php' );
require_once ( JPATH_BASE . '/includes/framework.php' ); 
$app =& JFactory::getApplication('site');
$app->initialise();

此外,如果我打开并重新保存another.php文件的内容,错误消失只会在第二天再次弹出。

1 个答案:

答案 0 :(得分:0)

发现问题。

如果您打开/libraries/joomla/filesystem/path.php

你会找到

public static function check($path, $ds = DIRECTORY_SEPARATOR)
{
    if (strpos($path, '..') !== false)
    {
        // Don't translate
        throw new Exception('JPath::check Use of relative paths not permitted', 20);
    }

    $path = self::clean($path);
    if ((JPATH_ROOT != '') && strpos($path, self::clean(JPATH_ROOT)) !== 0)
    {
        throw new Exception('JPath::check Snooping out of bounds @ ' . $path, 20);
    }

    return $path;
}

第一个if语句是它继续落入的地方,因为我的jpath在路径中有一个/../。要解决它,我已经注释掉了抛出新的Exception行。