CaBundle open_basedir限制

时间:2019-06-26 12:12:11

标签: php symfony symfony4 open-basedir

我们有一个已经投入生产数月的项目(其所有配置工作正常,没有问题-包括https和用户访问权限)。

我们在Symfony 4下重写了部分代码(在此之前未使用任何框架)。一切都可以在本地完美运行,但是在生产中,我们开始在日志中收到以下错误:

vendor/composer/ca-bundle/src/CaBundle.php is_dir(): open_basedir restriction in effect. File(/usr/local/etc/openssl) is not within the allowed path(s)

任何想法可能导致该问题的原因(嗯……错误很明显,一种解决方法是将其包括在允许的路径中,但是在我理解问题的根本原因之前,我不想这样做) ?

重要说明:

  1. 我们没有包括那个特定的捆绑包,它是作曲家的一部分。
  2. Composer不会失败,并且在composer install命令期间不会收到任何错误。
  3. 尽管有日志行,项目SEEMS仍能按预期工作。
  4. 我们前面有Cloudfare,并且在那里正确处理了https证书。
  5. 已使用捆绑软件的列表很短,但是如果需要,我可以提供一个列表。
  6. 我们没有对该束中的函数进行任何特定的调用(如果有的话,是由symfony / 3rd第三方束中的某些东西进行的,但是对所有代码(包括供应商)的快速搜索都没有发现任何结果。)

我有点无所适从,可能是导致问题的原因,尤其是因为它在本地甚至生产中都没有发生,因此该项目似乎还可以。

1 个答案:

答案 0 :(得分:1)

CA捆绑正试图从usr/local/etc/openssl中读取,但失败了,因为它不在PHP进程允许的目录之一中。

它发生在一台机器上,而不发生在另一台机器上,因为您的本地openbase_dir设置与生产环境不匹配(并且可能很松懈,因为这通常在开发中发生)。

您有两个选择:

  • 更改生产环境的openbase_dir设置,以便至少在该特定虚拟主机上更宽松。

  • 检查安装的软件包取决于Ca-Bundle,然后删除该软件包,使其不再包含。

进一步阅读: