重建后,我们多年来一直使用的wordpress插件,WP-DBManager突然停止备份我们的mysql数据库.备份失败,因为备份面板声称“MysqL路径不存在”.令人讨厌的是,当您访问DB选项页面并告诉它自动检测MysqL路径时,选项页面会生成/usr/bin/MysqL,这是正确的.我可以使用SSH登录到该站点.权限是:
-rwxr-xr-x 1 root root 338184 Jun 22 05:58 /usr/bin/MysqL
这应该是工作. SOMETHING在我的网站权限改变了这个重建,我不知道什么;到目前为止,我只记录了wordpress配置.我所做的研究表明它可能与PHP安全模式有关.我们运行PHP 5.3.3,PHPinfo()中的配置列表不显示
--enable-safe-mode
这意味着安全模式应该是OFF. 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目录:/家庭/ lrservice /箱
我不知道这是否是一个环境变量问题,这里是安全模式条目:
safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH
这些设置在工作测试网站上不一样,其中一个如下:
safe_mode_allowed_env_vars = PHP_LANGLANG_
由于该网站功能完备,除此之外,我知道MysqL的权限一般是正确的.这是否为任何人响铃任何钟?如果安全模式正式关闭,为什么我会得到这些?我有一种感觉,有一些明显的,愚蠢的,我失踪了.
我假设你的系统正在使用apache2网络服务器.
ChrootDir指令是否存在于apache配置文件中(通常位于/etc/httpd/conf/httpd.conf)?
如果是这样的话,你可以查看这个指令指向的目录,如果有一个链接到MysqL二进制文件.如果没有,只需在ssh会话中执行以下命令(假设您有权限执行此操作)即可添加它:
$ln /usr/bin/MysqL /chroot/path/usr/bin/MysqL
用/ chroot /路径替换为ChrootDir指令路径.
其中一个意见提到了open_basedir PHP setting,可以在PHP.ini,httpd.conf或.htaccess文件中进行配置.
此设置限制对PHP可用文件系统的某些目录的访问.一个可能的解决方法是删除这个限制,使用您所使用的插件执行的脚本,如果该设置不受保护:
找到您的wordpress目录中插件安装的脚本,
>创建一个.htaccess文件,使用以下命令解除包含脚本的目录中的限制:
$echo’PHP_value open_basedir none’>>的.htaccess
上述将在.htaccess文件末尾的简单引用之间添加文本,如有必要,创建它.
这个解决方案可能是最安全的,因为它可以减轻安全性,只放弃这些脚本.你应该保持警惕,你会让这些脚本可能比他们真正需要的操作更多的访问.
如果上述不起作用,这意味着该设置是受保护的,必须在httpd.conf或PHP.ini中进行更改,该文件应位于/ etc目录中.详见SO question.