【问题标题】:open_basedir issue on Fat-free framework关于无脂肪框架的 open_basedir 问题
【发布时间】:2017-09-22 02:46:14
【问题描述】:

我有以下关于 open_basedir 限制的问题。

is_file(): open_basedir restriction in effect. File(/home/dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php) is not within the allowed path(s): (/home/Dev/bongos.com/:/tmp/)

路径不同的原因是f3方法。

protected function autoload($class) {
    $class=$this->fixslashes(ltrim($class,'\\'));
    $func=NULL;
    if (is_array($path=$this->hive['AUTOLOAD']) &&
        isset($path[1]) && is_callable($path[1]))
        list($path,$func)=$path;
    foreach ($this->split($this->hive['PLUGINS'].';'.$path) as $auto)
        if ($func && is_file($file=$func($auto.$class).'.php') ||
            is_file($file=$auto.$class.'.php') ||
            is_file($file=$auto.strtolower($class).'.php') ||
            is_file($file=strtolower($auto.$class).'.php'))
            return require($file);
}

在倒数第二行,它将路径转换为小写以检查它是否存在。如果是这样,它会失败并出现上述错误。

我无法禁用 open_basedir 或操纵任何标准 f3 代码。

编辑

我的自动加载看起来像这样。

AUTOLOAD= Apps/

【问题讨论】:

  • 你的 AUTOLOAD 变量是什么样的?
  • @xfra35 感谢您的关注。我已更新我的问题以包含我的自动加载变量。

标签: php fat-free-framework open-basedir


【解决方案1】:

当您调用 Action\AuthAction 类时,框架自动加载器正在尝试查找以下 3 个文件:

  1. Action/AuthAction.phpPLUGINS: /home/Dev/bongos.com/vendor/bcosca/fatfree/lib/Action/AuthAction.php
  2. action/authaction.phpPLUGINS: /home/Dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php
  3. action/authaction.php 内小写 PLUGINS: /home/dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php

第三次尝试抛出open_basedir 错误。但这只是自动加载器找不到正确文件路径的副作用。如果没有open_basedir 指令,您将遇到class not found 错误。

如果您确保类文件名的大小写正确(Action/AuthAction.phpaction/authaction.php),自动加载器应该会找到该文件。

但是,如果您想确保open_basedir 在任何情况下都不会干扰自动加载器,只需将PLUGINS 设置为./,这是默认情况下指向/home/Dev/bongos.com/vendor/bcosca/fatfree/lib/ 的相对路径(前提是您的应用程序不change directory)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多