无法正确读取本地服务器上的文件

无法正确读取本地服务器上的文件

我正在运行 RedHat 6.2 Amazon EC2 实例,使用普通 Apache 和 IUS PHP53u+MySQL (+mbstring、+mysqli、+mcrypt),以及来自 git 的 phpMyAdmin。所有配置都接近原始配置,假设安装过程已描述。

我一直尝试使用 phpMyAdmin 将 SQL 文件导入数据库,以便从服务器上的目录中读取它们。phpMyAdmin 在下拉列表中正确列出了文件,但在实际尝试导入时返回“无法读取文件”错误。此外,当尝试对文件执行 file_get_contents(); 时,它还会返回“无法打开流:权限被拒绝”错误。

事实上,当我的兄弟尝试以具有所有权限的经过身份验证的 MySQL 用户身份使用 MySQL“SOURCE”导入 SQL 文件时,他在读取文件时遇到错误。看来我们无法使用 SSH 下 root 以外的任何方法读取/导入这些文件(虽然我不能说我已经尝试了所有可能的方法)。在具有相同 LAMP 堆栈配置的常规 CentOS(5、6、6.2)安装下,我从未遇到过此问题。

我在 Google 和 StackExchange 上搜索后尝试过以下方法:

  • CHMOD 0777 目录和文件,
  • CHOWN root,apache(我能想到的 PHP 只使用两个用户),
  • 导入 SQL 文件的总大小低于 upload_max_filesize 和 post_max_size,
  • PHP open_basedir 注释掉,或 =“/var/www”(我的网站在该目录中使用 Apache VirtualHosts,并且所有 SQL 文件都位于该目录深处),
  • PHP 安全模式已关闭(从未打开过)

目前,我已经通过直接使用 FILE UPLOAD 方法向 phpMyAdmin 解决了较小文件的问题,但由于我没有稳定的互联网连接,这不适合上传我的 200+ MiB SQL 文件。

如果您能就此情况提供任何线索,我将不胜感激。我对 Linux 很公平,对于确实让我困惑的问题,Google 通常能给出答案。但这次不是!

答案1

如果该文件已可供 mysql 用户读取,则向导入该文件的 mysql 用户授予 FILE 权限。

答案2

SELinux 是否已启用?除非您的安全要求强制启用,否则请禁用它。要查找答案,请检查 /etc/sysconfig/selinux 的内容。

答案3

我们采用了 cyberx86 的建议(我应该记得在基本 SQL 管理时代就采用过)一段时间,效果很好,但最后我终止了实例(并选择了 Amazon Linux 而不是 RedHat)。我们不再遇到这个问题。值得注意的是,这种方法是我们在最终生产服务器的 Amazon Linux 实例中使用的方法。

我相信 SELinux 可能是造成此问题的原因,但目前无法确认(或投票支持)。

干杯!

相关内容