2016-02-17 2 views
1

Я пытаюсь импортировать CSV-файл в базу данных MySQL с помощью HTML/PHP. Код: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

Смежные вопросы