2013-10-04 68 views
0

我想在Linux CentOS機器上使用PHP應用程序輸出一個「INTO OUTFILE」查詢來輸出一個csv文件。MySQL into outfile不能從PHP應用程序工作,但在MySQL中工作

下面是該查詢:

(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都使用相同的用戶運行,根
  • PHP應用程序在Windows計算機上運行良好,使用XAMPP
  • 如果我排除"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 
+0

什麼LS -al在/ var/www/html等/ MYAPP /下載輸出是什麼樣子? – user1455836

+0

@ user1455836 hey在編輯時添加了輸出謝謝 –

回答

0

這可能是權限錯誤。 MySQL可能無法訪問你的/ tmp目錄來創建臨時文件。確保/ tmp由root擁有,sticky位設置在/ tmp目錄中。鍵入以下命令,看它是否修正錯誤:

chown root:root /tmp 
chmod 1777 /tmp 

和重啓MySQL服務器