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

时间:2016-07-09 11:29:24

标签: php apache symfony

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

  

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设置问题?

这是完整的错误。

  
             
  1. 在ExecutableFinder.php中   第59行
  2.          
  3. 在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'))
  4.          
  5. 在ExecutableFinder.php中的is_dir('/ usr / lib / php')   第59行
  6.          
  7. 在ExecutableFinder-> find('java',   Configuration.php中的'/ usr / bin / java')   第67行
  8.          
  9. 在Configuration-> Symfony \ Bundle \ AsseticBundle \ DependencyInjection \ {closure}()   在VariableNode.php中   第54行
  10.          
  11. 在VariableNode-> getDefaultValue()   在ArrayNode.php第241行
  12.          
  13. at ArrayNode-> finalizeValue( array ('debug')   => true ,'use_controller'=> array ('enabled'=> true ),'bundles'=> array (),'filters'=> BaseNode.php中的 array ('cssrewrite'=> array ())))   第303行
  14.          
  15. at BaseNode-> finalize( array ('debug')   => true ,'use_controller'=> array ('enabled'=> true ),'bundles'=> array (),'filters'=>处理器.php第37行中的数组('cssrewrite'=> 数组())))
  16.          
  17. 处理器 - >进程(对象(ArrayNode),    array array ('debug'=> true ,   'use_controller'=> false ,'bundles'=>    array (),'filters'=> array ('cssrewrite'=>    null )), array ('use_controller'=>    true )))在Processor.php第50行
  18. 中          
  19. 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行
  20.          
  21. at AsseticExtension-> load( array array ('debug')   => true ,'use_controller'=> false ,'bundles'=> array (),'filters'=> array ('cssrewrite'=> null )), array ('use_controller'=> true ) ),对象(ContainerBuilder))   在MergeExtensionConfigurationPass.php中   第50行
  22.          
  23. 在MergeExtensionConfigurationPass->进程(对象(ContainerBuilder))   在MergeExtensionConfigurationPass.php中   第39行
  24.          
  25. 在MergeExtensionConfigurationPass->进程(对象(ContainerBuilder))   在Compiler.php中   第117行
  26.          
  27. at Compiler-> compile( object (ContainerBuilder))   在ContainerBuilder.php中   第614行
  28.          
  29. 在ContainerBuilder-> compile()   在bootstrap.php.cache中   第2564行
  30.          
  31. at Kernel-> initializeContainer()   在bootstrap.php.cache中   第2343行
  32.          
  33. at Kernel-> boot()   在bootstrap.php.cache中   第2374行
  34.          
  35. at Kernel-> handle( object (Request))in   app_dev.php   第29行
  36.       

1 个答案:

答案 0 :(得分:2)

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

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

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

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