【问题标题】:IspConfig & PHP-FPM - PHP config read from different pool?IspConfig 和 PHP-FPM - 从不同池读取的 PHP 配置?
【发布时间】:2015-03-19 19:10:44
【问题描述】:

在我的服务器上,我有以下设置:

  • ISPConfig 3.0.5.4p2
  • Ubuntu 14.04 LTS
  • Apache 2.4
  • 由 PHP-FPM 处理的 PHP(每个 web 一个池)

问题是,一些配置为子域(v-host)的网站有时会报告这个奇怪的错误:

来自 web46 的 PHP 错误

[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(): open_basedir restriction in effect. File(/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/web/ErrorAction.php) is not within the allowed path(s): (/var/www/clients/client1/we$
[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/web/ErrorAction.php): failed to open stream: Operation not permitted in /var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yi$
[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(): Failed opening '/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/web/ErrorAction.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/clients/clie$
[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(): open_basedir restriction in effect. File(/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/base/UnknownClassException.php) is not within the allowed path(s): (/var/www/clients$
[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/base/UnknownClassException.php): failed to open stream: Operation not permitted in /var/www/clients/client1/web3/cooltaxi/vendor$
[19-Mar-2015 18:39:07 UTC] PHP Warning:  include(): Failed opening '/var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/base/UnknownClassException.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/c$
[19-Mar-2015 18:39:07 UTC] PHP Fatal error:  Class 'yii\base\UnknownClassException' not found in /var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/BaseYii.php on line 291
[19-Mar-2015 18:39:07 UTC] PHP Fatal error:  Uncaught exception 'ReflectionException' with message 'Class yii\web\ErrorAction does not exist' in /var/www/clients/client1/web3/cooltaxi/vendor/yiisoft/yii2/di/Container.php:415

PHP-FPM 池 - web46

[web46]

listen = /var/lib/php5-fpm/web46.sock
listen.owner = web3
listen.group = client1
listen.mode = 0660

user = web3
group = client1

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

chdir = /

php_admin_value[open_basedir] = /var/www/clients/client1/web3/test:/var/www/clients/client1/web3/private:/var/www/clients/client1/web3/tmp:/var/www/test.agelis.cz/test:/srv/www/test.agelis.cz/test:/usr/share/php5:/usr/share/php:/tmp:/us$
php_admin_value[session.save_path] = /var/www/clients/client1/web3/tmp
php_admin_value[upload_tmp_dir] = /var/www/clients/client1/web3/tmp
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -fwebmaster@test.agelis.cz"

php_admin_value[upload_max_filesize] = 128M
php_admin_value[post_max_size] = 128M
php_admin_value[max_input_vars] = 4000

PHP-FPM 池 - web59

[web59]

listen = /var/lib/php5-fpm/web59.sock
listen.owner = web3
listen.group = client1
listen.mode = 0660

user = web3
group = client1

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

chdir = /

php_admin_value[open_basedir] = /var/www/clients/client1/web3/cooltaxi:/var/www/clients/client1/web3/private:/var/www/clients/client1/web3/tmp:/var/www/cooltaxi.agelis.cz/cooltaxi:/srv/www/cooltaxi.agelis.cz/cooltaxi:/usr/share/php5:/us$
php_admin_value[session.save_path] = /var/www/clients/client1/web3/tmp
php_admin_value[upload_tmp_dir] = /var/www/clients/client1/web3/tmp
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -fwebmaster@cooltaxi.agelis.cz"

Apache fcgi vhost 配置 - web46

      <IfModule mod_fastcgi.c>
                        <Directory /var/www/clients/client1/web3/cgi-bin>
                                                                        Require all granted
                                                            </Directory>
                        <Directory /var/www/test.agelis.cz/test>
                                <FilesMatch "\.php[345]?$">
                                        SetHandler php5-fcgi
                                </FilesMatch>
                        </Directory>
                        <Directory /var/www/clients/client1/web3/test>
                                <FilesMatch "\.php[345]?$">
                                        SetHandler php5-fcgi
                                </FilesMatch>
                        </Directory>
        Action php5-fcgi /php5-fcgi
                        Alias /php5-fcgi /var/www/clients/client1/web3/cgi-bin/php5-fcgi-88.86.115.169-443-test.agelis.cz
        FastCgiExternalServer /var/www/clients/client1/web3/cgi-bin/php5-fcgi-88.86.115.169-443-test.agelis.cz -idle-timeout 300 -socket /var/lib/php5-fpm/web46.sock -pass-header Authorization
        </IfModule>

看起来像 open_basedir 问题,但奇怪的是,PHP 出于某种原因从不同的池配置中获取了 open_basedir 设置(您可以看到 - 错误来自 web43,但路径来自 web59)

php-fpm 错误日志中没有条目。

任何帮助将不胜感激。我已经尝试了我所知道的一切,但仍然无法解决问题:-(

【问题讨论】:

    标签: php open-basedir


    【解决方案1】:

    在遇到完全相同的问题并尝试修复它几个星期后,我终于想出了一个解决方案。

    我认为问题源于将 Apache 服务器升级到 2.4。自升级以来,我收到了这些错误消息。经过数小时的“试错”,我终于在howtoforge 上找到了提示,这似乎是 ISPConfig 最活跃的论坛。

    看起来 ISPConfig 不会更新主配置文件,包括 Apache 和 PHP-FPM。我猜他们想防止弄乱您修改后的主配置。那里的 ISPConfig 开发人员建议用来自ISPConfig GIT 的新主配置文件替换旧的主配置文件。我从提供的链接下载了以下文件:

    • vhost.conf.master
    • php_fpm_pool.conf.master

    并替换了我当前在 /usr/local/ispconfig/server/conf/ 中的配置文件。最后一步是使用 ISPConfig 更新所有创建的配置(工具 -> 重新同步 -> 重新同步网站)。由于这样做,我没有收到一个 PHP-FPM 错误。

    【讨论】:

    • 哇非常感谢你,显然我没有运行最新的 ISPConfig 版本,但是这篇文章是从 2015 年 10 月 21 日开始的,我的新系统是从 2016 年 1 月开始的......仍然存在这个问题在我的版本中...替换这些文件后一切正常!
    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2019-02-08
    相关资源
    最近更新 更多