open_basedir 关于 Fat-free 框架的问题
open_basedir issue on Fat-free framework
我有以下问题 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/
当您调用 Action\AuthAction
class 时,框架自动加载器正在尝试查找以下 3 个文件:
Action/AuthAction.php
里面 PLUGINS
:
/home/Dev/bongos.com/vendor/bcosca/fatfree/lib/Action/AuthAction.php
action/authaction.php
里面 PLUGINS
:
/home/Dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php
action/authaction.php
内部小写 PLUGINS
:
/home/dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php
第三次尝试抛出 open_basedir
错误。但这只是自动加载器找不到正确文件路径的副作用。如果没有 open_basedir
指令,您将遇到 class not found
错误。
如果您确定 class 文件名的大小写正确(Action/AuthAction.php
或 action/authaction.php
),自动加载器应该可以找到该文件。
但是如果你想确保 open_basedir
在任何情况下都不会与自动加载器混淆,只需将 PLUGINS
设置为 ./
,这是指向的相对路径默认 /home/Dev/bongos.com/vendor/bcosca/fatfree/lib/
(前提是您的应用程序不 change directory)。
我有以下问题 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/
当您调用 Action\AuthAction
class 时,框架自动加载器正在尝试查找以下 3 个文件:
Action/AuthAction.php
里面PLUGINS
:/home/Dev/bongos.com/vendor/bcosca/fatfree/lib/Action/AuthAction.php
action/authaction.php
里面PLUGINS
:/home/Dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php
action/authaction.php
内部小写PLUGINS
:/home/dev/bongos.com/vendor/bcosca/fatfree/lib/action/authaction.php
第三次尝试抛出 open_basedir
错误。但这只是自动加载器找不到正确文件路径的副作用。如果没有 open_basedir
指令,您将遇到 class not found
错误。
如果您确定 class 文件名的大小写正确(Action/AuthAction.php
或 action/authaction.php
),自动加载器应该可以找到该文件。
但是如果你想确保 open_basedir
在任何情况下都不会与自动加载器混淆,只需将 PLUGINS
设置为 ./
,这是指向的相对路径默认 /home/Dev/bongos.com/vendor/bcosca/fatfree/lib/
(前提是您的应用程序不 change directory)。