PHP file_exists()函数在/usr/bin/mysql中返回false

前端之家收集整理的这篇文章主要介绍了PHP file_exists()函数在/usr/bin/mysql中返回false前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我读过很多关于这个问题的帖子,没有一个与我的问题完全匹配.我在GoDaddy虚拟主机上有一个wordpress网站(目前为3.5). 11月份,我选择将OOS从CentOS 5升级到CentOS 6.3,其中包括完整的O / S重新安装,我无法控制,我没有任何信息.在重新安装O / S之后,我从刚启动之前的备份重建了站点.

重建后,我们多年来一直使用的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的权限一般是正确的.这是否为任何人响铃任何钟?如果安全模式正式关闭,为什么我会得到这些?我有一种感觉,有一些明显的,愚蠢的,我失踪了.

您可以从/usr/bin目录中的ssh会话访问MysqL二进制文件,但PHP无法在同一位置找到它.
我假设你的系统正在使用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.

猜你在找的PHP相关文章