Хорошо, поэтому через неделю, пытаясь найти все ответы на различные идеи, которые я нашел без успеха, я собираюсь спросить. Это для LOAD DATA LOCAL INFILE для MySQL. Было много сообщений об этом, но я все еще не могу заставить его работать с веб-браузером, но я могу запустить его из командной строки mysql на сервере, с тем же пользователем и передать соединение с той же базой данных. То, что я пробовал до сих пор
В my.cnf local-infile=1
в mysqld, mysql, mysql-safe loose-local-infile=1
клиент
Перезагруженный сервер MySQL. На этом этапе я смог запустить запрос из командной строки, а раньше не имел этого. Я дал директорию, в которой файлы извлекаются из доступа 777. Я подтвердил, что php.ini имеет параметр локального файла. Я обновил apparmor. Фактический запрос:
LOAD DATA LOCAL INFILE '/var/www/ui/uploads/r_import.csv' INTO TABLE r_data FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (first_name,last_name,apt,user_id)
Над запросом работает команда mysql без особых аргументов при подключении к серверу.
Если у кого-нибудь есть идеи по этому поводу, я был бы счастлив попробовать что-нибудь … Спасибо заранее.
<?php include 'includes/header.php'; if($_FILES['file']['type'] != "application/vnd.ms-excel"){ die("This is not a CSV file."); } elseif(is_uploaded_file($_FILES['file']['tmp_name'])){ $filename = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; copy( $filename, 'uploads/'.$name ) or die( "Could not copy file!"); $file_to_import = '/var/www/ui/uploads/'.$name; $query = 'LOAD DATA LOCAL INFILE \''.$file_to_import.'\' INTO TABLE r_data FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\' IGNORE 1 ROWS (first_name,last_name,apt,user_id)'; echo $query; $result = mysqli_query($link,$query) or die(mysqli_error($link)); } else{ die("You shouldn't be here"); } ?>