当我突然遇到这个错误时,我正在做一个非个人项目。
ExecutableFinder.php第59行中的ContextErrorException:警告: is_dir():open_basedir限制生效。文件(/ usr / lib / php)是 不在允许的路径内: (/无功/网络/ allservice:/ usr / lib中/ PHP:/ usr / lib中/ PHP5:/ TMP:在/ usr / bin中/ php)中
以下是 open_basedir 设置的phpinfo()
。
的/ var / WWW / allservice:/ usr / lib中/ PHP:/ usr / lib中/ PHP5:/ TMP:在/ usr / bin中/ PHP的
我在托管上遇到此错误。在当地环境中一切正常。我尝试过通过Composer重新安装Symfony并清理缓存。什么都没有帮助。
因为它停止在托管上工作并在本地工作,据我所知这可能是PHP或Apache设置问题?
这是完整的错误。
- 在ExecutableFinder.php中 第59行
- 在ErrorHandler-> handleError('2', 'is_dir():open_basedir限制生效。文件(/ usr / lib / php)是 不在允许的路径内: (/无功/网络/ 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',数组('name'=>'java','default'=> '/ usr / bin / java','extraDirs'=> 数组(),'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', Configuration.php中的'/ usr / bin / java') 第67行
- 在Configuration-> Symfony \ Bundle \ AsseticBundle \ DependencyInjection \ {closure}() 在VariableNode.php中 第54行
- 在VariableNode-> getDefaultValue() 在ArrayNode.php第241行
- at ArrayNode-> finalizeValue( array ('debug') => true ,'use_controller'=> array ('enabled'=> true ),'bundles'=> array (),'filters'=> BaseNode.php中的 array ('cssrewrite'=> array ()))) 第303行
- at BaseNode-> finalize( array ('debug') => true ,'use_controller'=> array ('enabled'=> true ),'bundles'=> array (),'filters'=>处理器.php第37行中的数组('cssrewrite'=> 数组())))
- 处理器 - >进程(对象(ArrayNode), array ( array ('debug'=> true , 'use_controller'=> false ,'bundles'=> array (),'filters'=> array ('cssrewrite'=> null )), array ('use_controller'=> true )))在Processor.php第50行
中- at Processor-> processConfiguration( object (Configuration), array ( array ('debug'=> true , 'use_controller'=> false ,'bundles'=> array (),'filters'=> array ('cssrewrite'=> null )), array ('use_controller'=> 在AsseticExtension.php中 true ))) 第44行
- at AsseticExtension-> load( array ( array ('debug') => true ,'use_controller'=> false ,'bundles'=> array (),'filters'=> array ('cssrewrite'=> null )), array ('use_controller'=> true ) ),对象(ContainerBuilder)) 在MergeExtensionConfigurationPass.php中 第50行
- 在MergeExtensionConfigurationPass->进程(对象(ContainerBuilder)) 在MergeExtensionConfigurationPass.php中 第39行
- 在MergeExtensionConfigurationPass->进程(对象(ContainerBuilder)) 在Compiler.php中 第117行
- at Compiler-> compile( object (ContainerBuilder)) 在ContainerBuilder.php中 第614行
- 在ContainerBuilder-> compile() 在bootstrap.php.cache中 第2564行
- at Kernel-> initializeContainer() 在bootstrap.php.cache中 第2343行
- at Kernel-> boot() 在bootstrap.php.cache中 第2374行
- at Kernel-> handle( object (Request))in app_dev.php 第29行
醇>
答案 0 :(得分:2)
这是您托管PHP配置的结果。
基本上,他们设置了open_basedir
配置指令,以防止他们的客户弄乱专用沙箱之外的文件。
我从你的堆栈跟踪中看到你试图找到/usr/bin/java
中不在open_basedir
指定路径中的java可执行文件,因此出错。
您可以尝试说服托管管理员为您更改指令,如果他们不这样做,您将无法执行此操作。