我正在尝试使用 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 可以正常运行查询并在正确的目录中输出 .csv 文件
"/var/www/html/myapp/downloads"
- 然而,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