【发布时间】:2013-12-27 02:18:04
【问题描述】:
我正在尝试使用 SELECT INTO OUTFILE 将文件写入另一个目录中的自定义目录,该目录比我的文档根目录高一级。我可以写信到 /tmp,所以我知道其他一切都在工作。
我正在使用文件的绝对完整路径。我可以使用 PHP 创建目录并 chmod 到 0777。目录创建成功,模式设置正确(通过SSH和FTP查看)。
我要使用的路径示例:
/var/www/vhosts/mysite/private_www/data_export/newdir/
我原以为只要目录是世界可读/可写/可执行的,MySQL 就可以对其进行写入。但我仍然收到此错误。
无法创建/写入文件(错误代码:13)
我发现了很多关于这个错误的帖子,但除了写入/tmp之外没有其他解决方案。但是,如果我写入 /tmp,我必须添加更多代码来处理文件名,然后将文件复制到我想要的位置。
我认为也许我需要一条不同于 PHP 的 MySQL 路径。有没有办法检查 MySQL 将什么视为服务器根目录?但是,我不确定这可能是问题所在,因为我可以使用相同的路径加载 DATA INFILE。
我的设置
- CentOS 6
- PHP 5.3
- MySQL 5.5
- 带有 Plesk 控制面板的专用服务器
- PHP 作为 Apache 模块运行
我错过了什么?
【问题讨论】:
-
嗯 CentOS。我感觉这是由于启用了 SELinux。检查
/sbin/getenforce。它是强制的还是允许的?如果强制执行,我敢打赌 mysqld 被拒绝写入您想要写入的任何位置。 -
如果我在命令提示符下只输入
getenforce,输出就是单词Disabled。 -
好吧,如果 SELinux 处于禁用模式,它不会阻止写入(即使您有 0777 也可能发生)
标签: php mysql into-outfile