【问题标题】:MySQL into outfile not working from PHP application but working in mysqlMySQL 到 outfile 不能在 PHP 应用程序中工作,但在 mysql 中工作
【发布时间】:2013-10-04 16:18:32
【问题描述】:

我正在尝试使用 PHP 应用程序在 Linux CentOS 机器上执行“INTO OUTFILE”查询以输出 csv 文件。

这里是查询:

(SELECT 'Date', 'Customer', 'Customer name', 'Commission', 'User', 'Value') UNION (SELECT t1.`DATE`, t1.`CUSTOMER`, t1.`CUSTOMERNAME`, t1.`COMMISSION`, t1.`USER`, t1.`VALUE` FROM `raws` t1, `roles` t2 ORDER BY `CUSTOMER`, `CUSTOMERNAME`, `COMMISSION`, `USER`, `DATE` ASC INTO OUTFILE '/var/www/html/myapp/downloads/524e6b306c451.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ')

以下是问题的一些细节:

  • mysql 可以正常运行查询并在正确的目录"/var/www/html/myapp/downloads" 输出一个.csv 文件
  • 然而,PHP 应用程序返回一个错误,指出 "SQLSTATE[HY000]: General error: 1 Can't create/write to file"
  • mysql 和 PHP 都使用同一个用户 root 运行
  • PHP 应用程序在带有 XAMPP 的 Windows 机器上运行良好
  • 如果我排除 "into outfile" 查询,PHP 应用程序就会运行。

基于上述,我确信这与我的 CentOS 机器上的文件权限有关。但是,即使我完成了chmod -R 777 /var/www,我仍然会遇到同样的错误。

请帮忙,提前谢谢

编辑:

ls -la /var/www/html/myapp/downloads 如下所示:

drwxrwsrwt. 2 mysql mysql  4096 Oct  4 10:37 .
drwxrwsrwx. 9 root  www    4096 Oct  4 07:56 ..
-rwxrwxrwx. 1 mysql mysql 55353 Oct  4 10:36 524e67124bba4.csv
-rwxrwxrwx. 1 mysql mysql 51195 Oct  4 10:04 524e7699a69a7.csv
-rwxrwxrwx. 1 mysql mysql 51195 Oct  4 10:07 524e7737c54ad.csv
-rwxrwxrwx. 1 mysql mysql 51195 Oct  4 10:08 524e7782a21a3.csv

【问题讨论】:

  • ls -al /var/www/html/myapp/downloads 输出是什么样的?
  • @user1455836 嘿,在编辑中添加了输出,谢谢

标签: php mysql linux centos


【解决方案1】:

可能是权限错误。 MySQL 可能无法访问您的 /tmp 目录来写入和创建临时文件。确保 /tmp 由 root 拥有,并且在 /tmp 目录上设置了粘滞位。键入以下命令以查看它是否修复了错误:

chown root:root /tmp
chmod 1777 /tmp

重启mysql服务器

【讨论】:

    【解决方案2】:

    General error: 1 Can't create/write to file errcode:2 这会用 chown 来解决。

    感谢和问候,
    阿洛克·萨克

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2018-06-19
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      相关资源
      最近更新 更多