10

我已经阅读了很多关于这个问题的帖子,但没有一个完全符合我的问题。我在 GoDaddy 虚拟主机上有一个 WordPress 网站(目前是 3.5)。11 月,我选择将 O/S 从 CentOS 5 升级到 CentOS 6.3,这涉及到完整的 O/S 重新安装,对此我无法控制,也没有任何信息。在重新安装 O/S 之后,我从开始前的备份中重建了站点。

重建后,我们使用多年的 WordPress 插件 WP-DBManager 突然停止备份我们的 mysql 数据库。备份失败,因为备份面板声称“MYSQL 路径不存在”。烦人的是,当您进入 DB Options 页面并告诉它自动检测 mysql 路径时,选项页面会生成 /usr/bin/mysql,这是正确的。我可以使用 SSH 登录该站点,它就在那里。权限是:

-rwxr-xr-x 1 root root 338184 Jun 22 05:58 /usr/bin/mysql

这应该有效。我的网站权限中的某些内容随着这次重建而改变,我不知道是什么;到目前为止,我只记录了 WordPress 配置。我所做的研究表明这可能与 PHP 安全模式有关。我们运行 PHP 5.3.3,并且 phpinfo() 的配置列表不显示

--enable-safe-mode

这意味着安全模式应该关闭。启动时 php.ini 中的安全模式设置为:

safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
safe_mode_exec_dir = 
safe_mode_include_dir = 
safe_mode = off
safe_mode_gid = off

此后,我将 safe_mode_gid 更改为 ON,但没有任何效果。我有一个从生产站点构建的测试站点,其中 safe_mode_include_dir = ~ 所以我尝试了,但没有效果。测试站点运行 PHP 5.3.14,除了 safe_mode_include_dir 之外,上面的安全模式设置相同。我检查了 ENV 变量,并且 /usr/bin 包含在 PATH 中:

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lrservice/bin

我不知道这是否是环境变量问题,这里是安全模式条目:

safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH

这些设置在工作测试站点上并不完全相同,其中之一是:

safe_mode_allowed_env_vars = PHP_ LANG LANG_

由于该站点除此之外功能齐全,因此我知道mysql的权限通常是正确的。这会为任何人敲响警钟吗?如果安全模式被正式关闭,为什么我会得到这一切?我有一种感觉,我错过了一些明显而愚蠢的东西。

4

1 回答 1

2

您可以从目录中的会话访问mysql二进制文件,但无法在同一位置找到它。我假设您的系统正在使用apache2网络服务器。ssh/usr/binphp

ChrootDir指令是否存在于 apache 配置文件中(通常位于/etc/httpd/conf/httpd.conf)?

如果是这种情况,您可以检查该指令指向的目录是否有指向 mysql 二进制文件的链接。如果没有,只需在 ssh 会话中执行以下命令(假设您有这样做的权限)来添加它:

$ ln /usr/bin/mysql /chroot/path/usr/bin/mysql

替换/chroot/pathChrootDir指令路径。


其中一条评论提到了open_basedir PHP 设置,可以在php.inihttpd.conf.htaccess文件中进行配置。

此设置限制对 PHP 可用的文件系统的某些目录的访问。如果该设置不受保护,则可能的解决方法是删除您正在使用的插件执行的脚本的此限制:

  • 在您的 wordpress 目录中找到插件安装的脚本,
  • 使用以下命令在包含脚本的目录中创建一个 .htaccess 文件以解除限制:

    $ echo 'php_value open_basedir none' >> .htaccess

以上将在 .htaccess 文件末尾的简单引号之间添加文本,如有必要,请创建它。此解决方案可能是最安全的,因为它降低了仅对这些脚本的安全性。您应该小心,您将让这些脚本可能访问比它们真正需要操作的更多的东西。

如果上述方法不起作用,则表示该设置受到保护,必须在httpd.confphp.ini中进行更改,这两个文件都应位于该/etc目录中。有关详细信息,请参阅此SO 问题

于 2012-12-19T01:49:15.027 回答