首页 文章

文件不在允许的路径内(Symfony)

提问于
浏览
1

当我突然遇到这个错误时,我正在做一个非个人项目 .

ExecutableFinder.php第59行中的ContextErrorException:警告:is_dir():open_basedir限制生效 . 文件(/ usr / lib / php)不在允许的路径中:(/ var / www / allservice:/ usr / lib / php:/ usr / lib / php5:/ tmp:/ usr / bin / php )

这是 open_basediropen_basedir 设置 .

/ var / www / allservice:/ usr / lib / php:/ usr / lib / php5:/ tmp:/ usr / bin / php

我在托管上收到此错误 . 在当地环境中一切正常 . 我尝试过通过Composer重新安装Symfony并清理缓存 . 什么都没有帮助 .

既然它停止在托管上工作并在本地工作,据我所知这可能是PHP或Apache设置问题?

这是完整的错误 .

在ErrorHandler-> handleError('2','is_dir():open_basedir限制生效的ExecutableFinder.php第59行中 . 文件(/ usr / lib / php)不在允许的路径中:(/ var / www / allservice:/ usr / lib / php:/ usr / lib / php5:/ tmp:/ usr / bin / php)','/ var / www / allservice / allservice.in.ua/testPHP/vendor/symfony/ symfony / src / Symfony / Component / Process / ExecutableFinder.php','59',array('name'=>'java','default'=>'/ usr / bin / java','extraDirs'=> array (),'searchPath'=> array('/ var / www / allservice','/ usr / lib / php','/ usr / lib / php5','/ tmp','/ usr / bin / php' ),'dirs'=> array('/ var / www / allservice'),'path'=>'/ usr / lib / php'))在ExecutableFinder.php中的is_dir('/ usr / lib / php')第59行在ExecutableFinder-> find('java','/ usr / bin / java')的Configuration.php第67行Configuration-> Symfony \ Bundle \ AsseticBundle \ DependencyInjection \ ()在VariableNode.php第54行at ArrayNode.php第241行的VariableNode-> getDefaultValue()在ArrayNode-> finalizeValue(array('debug'=> true,'use_controller'=> array('en)在BaseNode-> finalize(array('debug)的BaseNode.php第303行中'able ='>,'bundles'=> array(),'filters'=> array('cssrewrite'=> array()))) '=> true,'use_controller'=> array('enabled'=> true),'bundles'=> array(),'filters'=> array('cssrewrite'=> array())))在处理器中 . 处理器 - >进程中的php第37行(对象(ArrayNode),数组(数组('debug'=> true,'use_controller'=> false,'bundles'=> array(),'filters'=> array('cssrewrite) '=> null)),array('use_controller'=> true)))在Processor-php第50行处理器 - > processConfiguration(对象(配置),数组(数组('debug'=> true,'use_controller'= > false,'bundles'=> array(),'filters'=> array('cssrewrite'=> null)),array('use_controller'=> true)))在AsseticExtension-> load的AsseticExtension.php第44行(array(array('debug'=> true,'use_controller'=> false,'bundles'=> array(),'filters'=> array('cssrewrite'=> null)),array('use_controller'= > true)),MergeExtensionConfigurationPas中的对象(ContainerBuilder) MergeExtensionConfigurationPass.php第39行MergeExtensionConfigurationPass.php第39行中的MergeExtensionConfigurationPass-> process(对象(ContainerBuilder))中的s.php第50行编译器中的Compiler.php第117行中的进程(对象(ContainerBuilder)) - > compile(对象(ContainerBuilder))在ContainerBuilder.php第614行的ContainerBuilder-> compile()在bootstrap.php.cache第2564行的Kernel-> initializeContainer()在bootstrap.php.cache第2343行的Kernel-> boot()在bootstrap.php.cache行2374 at app_dev.php第29行中的Kernel-> handle(object(Request))

1 回答

  • 2

    这是您托管PHP配置的结果 .

    基本上,他们设置了一个 open_basedir 配置指令,以防止他们的客户弄乱他们专用沙箱之外的文件 .

    我从你的堆栈跟踪中看到你试图找到 /usr/bin/java 中的java可执行文件,它不在 open_basedir 指定的路径中,因此出错 .

    您可以尝试说服托管管理员为您更改指令,如果他们不这样做,您将无法执行此操作 .

相关问题