2016-02-17 67 views
1

我正嘗試使用HTML/PHP在MySQL數據庫中導入.csv文件。該代碼是:SQL查詢和臨時文件權限

HTML

<form method="post" action="" enctype="multipart/form-data"> 
    File: <input type="file" name="csv"> 
    <input type="submit" value="Send" name="subCSV"> 
</form> 

PHP

$file = $_FILES["csv"]["tmp_name"]; 

try { 
    $query = $connexion -> prepare("LOAD DATA INFILE ? into TABLE myTable FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\r\\n' IGNORE 1 ROWS"); 
    $query->bindValue(1, $file, PDO::PARAM_STR); 
    $query->execute(); 
} catch(PDOException $e) { echo $e->getMessage(); $errorCode = $e->getCode(); 

但我發現了這個錯誤:

File '/tmp/phpl8eY59' not found (Errcode: 13) 

指定的文件中明確的工作。權限沒問題,運行Apache的用戶和文件所有者是相同的。我已授予數據庫用戶的文件許可權。

顯然配置AppArmor會解決問題,但我沒有使用它,因爲它沒有安裝在我的服務器上。

回答

0

我已經解決了這個問題與此:

chmod($file, 0644); 

阿帕奇/ PHP用戶和MySQL用戶名不一樣。

0

你可以嘗試使用「LOAD DATA LOCAL INFILE」。見例如這裏的答案:LOAD DATA INFILE does not work。問題在於這個問題似乎有各種原因。

+0

我試過了,但命令是不允許的。 – flowgunso