0

我正在使用 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 时,我正在调用一个具有

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 文件的内容,错误就会消失,但第二天会再次弹出。

4

1 回答 1

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 在路径中有一个 /../ 。为了解决这个问题,我注释掉了 throw new Exception 行。

于 2013-08-13T02:53:55.850 回答