Wp-includes/load.pgp无法识别ISPConfig Jailkit用户外壳中的db.php的文件路径

时间:2021-11-11 作者:mjones

我目前的问题如下。

我在主机maschine上有一个本地LAMP环境WP Multisite,我将其迁移到一个使用jailkit进行安全保护的ISPConfig客户端目录(vbox Debian 10测试服务器)。这是在我的测试服务器上,因此还没有在线可用的内容)

迁移之后,由于上载文件路径从/var/www/html/wordpress-directory/wp-content//web/wp-content/.

以更正我的wp调试日志中的各种错误。我使用了以下代码:

/* Multisite */
define( \'WP_ALLOW_MULTISITE\', true );
define( \'FS_METHOD\', \'direct\' );
define( \'FS_CHMOD_DIR\', ( 0755 & ~ umask() ) ); // change permissions of directories
define( \'FS_CHMOD_FILE\', ( 0644 & ~ umask() ) ); // change permissions of files
define( \'MULTISITE\', true );
define( \'SUBDOMAIN_INSTALL\', true );
define( \'DOMAIN_CURRENT_SITE\', \'tester1.example.com\' );
define( \'PATH_CURRENT_SITE\', \'/\' );
define( \'SITE_ID_CURRENT_SITE\', 1 );
define( \'BLOG_ID_CURRENT_SITE\', 1 );
//These work, but open_basedir error remain
define(\'WP_CONTENT_DIR\', ABSPATH . \'wp-content\' );
define( \'WP_PLUGIN_DIR\', WP_CONTENT_DIR . \'/plugins\' );
上面的代码用于在迁移后更正大多数错误,但此错误仍保留在我的wp调试日志中:

[11-Nov-2021 07:15:46 UTC] PHP Warning:  file_exists(): open_basedir restriction in effect. File(/var/www/clients/client1/web10/web/wp-content/db.php) is not within the allowed path(s): (/var/www/clients/client1/web10/web/wp-content:/var/www/clients/client1/web10/web:/var/www/clients/client1/web10/private:/var/www/clients/client1/web10/tmp:/var/www/example.com/web:/srv/www/example.com/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/dev/random:/dev/urandom) in /var/www/clients/client1/web10/web/wp-includes/load.php on line 545
[11-Nov-2021 07:15:46 UTC] PHP Stack trace:
[11-Nov-2021 07:15:46 UTC] PHP   1. {main}() /var/www/clients/client1/web10/web/wp-admin/themes.php:0
[11-Nov-2021 07:15:46 UTC] PHP   2. require_once() /var/www/clients/client1/web10/web/wp-admin/themes.php:10
[11-Nov-2021 07:15:46 UTC] PHP   3. require_once() /var/www/clients/client1/web10/web/wp-admin/admin.php:34
[11-Nov-2021 07:15:46 UTC] PHP   4. require_once() /var/www/clients/client1/web10/web/wp-load.php:50
[11-Nov-2021 07:15:46 UTC] PHP   5. require_once() /var/www/clients/client1/web10/web/wp-config.php:138
[11-Nov-2021 07:15:46 UTC] PHP   6. require_wp_db() /var/www/clients/client1/web10/web/wp-settings.php:124
[11-Nov-2021 07:15:46 UTC] PHP   7. file_exists($filename = \'/var/www/clients/client1/web10/web/wp-content/db.php\') /var/www/clients/client1/web10/web/wp-includes/load.php:545
当我检查时/var/www/clients/client1/web10/web/wp-includes/load.php:545, 我明白了:

    require_once ABSPATH . WPINC . \'/wp-db.php\';
    if ( file_exists( WP_CONTENT_DIR . \'/db.php\' ) ) {
            require_once WP_CONTENT_DIR . \'/db.php\';
    }
以上WP\\u CONTENT\\u DIR位置已由我的WP config定义。php设置,但似乎被忽略/var/www/clients/client1/web10/web/wp-includes/load.php:545

ISPConfig内部(>)&燃气轮机;域(>)&燃气轮机;网站(>)&燃气轮机;选项(>)&燃气轮机;打开\\u basedir。。。。我有:

/var/www/clients/client1/web10/web:/var/www/clients/client1/web10/private:/var/www/clients/client1/web10/tmp:/var/www/example.com/web:/srv/www/example.com/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/dev/random:/dev/urandom
显然,wp-content/db.php 位于允许的目录内/var/www/clients/client1/web10/web:

我仔细检查了(在服务器上的jailkit shell之外)系统的\'/etc/php/7.4/fpm/php。ini并确认open\\u base\\u dir尚未硬编码,因为这将;“中断”;ISPConfig。

; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; http://php.net/open-basedir
;open_basedir =
域下(&T)&燃气轮机;网站(>)&燃气轮机;PHP。。。。我有

PHP: PHP-FPM
PHP Version: 7.4
域下(&T)&燃气轮机;网站(>)&燃气轮机;选项。。。。我有:

Use Socket For PHP-FPM (checked / enabled)
Chroot PHP-FPM (unchecked / disabled)
PHP-FPM Process Manager (ondemand PHP version >=5.3.9)
这些是我在;自定义php。ini设置;字段:


    post_max_size = 48M
    max_input_vars = 1200
    upload_max_filesize = 24M
    max_execution_time = 300
    memory_limit = 256M

我不希望通过apache或PHP禁用open\\u basedir。因为这会破坏ISPConfig并削弱我的安全性。从我的wp配置设置可以看出,我尝试了各种解决方案,但似乎什么都不起作用。。。

如何调整WP和/或ISPConfig以消除open\\u basedir限制错误?

注意:我试图通过ISPConfig从单个站点删除open\\u basedir选项,但它们会自动恢复。我不想在全球范围内关闭它们,因为那样会造成安全漏洞。。。有什么建议吗?

1 个回复
SO网友:mjones

对于任何可能遇到此帖子的人。。。我的解决方案,而不是策略很简单:

在研究了open\\u basedir配置的真正安全价值后,我使用ModSec实现了3个不同级别的应用程序防火墙,并且我的整个站点都位于debian 10/ispconfig用户jailkit中,通过在位于域的字段中添加“none”一词,在单个站点级别上停用ISPConfig中的open\\u basedir选项可能是安全的>&燃气轮机;网站(>)&燃气轮机;选项(>)&燃气轮机;打开\\u basedir。

然后更新并修复多站点中插件使用的所有文件路径,这些路径仍然指向已迁移的位置(使它们都反映本地ISPConfig jailkit或新wp内容文件夹的任何其他位置)…完成后,通过删除“无”并保存设置来响应open\\u basedir。

相关推荐

WP-admin使用与主题文件不同的php.ini

我的网络主机出现了一个奇怪的问题(似乎也没有什么想法)。我试图通过更改php中的值来增加wp安装的上传限制。ini。如果我检查哪个php。ini-使用php_ini_loaded_file(), wp admin/upload中的调用。php返回“/usr/local/lib/php.ini”,但在wp-content/themes/themefolder/header中的函数相同。php返回“/home/account694/public\\u html/php.ini”主机使用“共享”类型的php。i