Я пробовал добавлять строки в my.cnf
[mysql]
infile = 1
[mysqld]
infile = 1
SHOW VARIABLES LIKE "%infile"
отображает истину в mysql.
Но ЗАГРУЗИТЬ ДАННЫЕ не работает. Я пробовал это в сценарии PHP и в phpMyAdmin.
Это работает, только если я запускаю mysql из командной строки с --allow-infile
флаг
mysql --local-infile -u root -p db_name
Но это не решило проблему PHP.
Я, наконец, решил проблему, что казалось смехотворно простым способом. Я видел так много сообщений об этой проблеме, но единственное, что я нашел, работало, было то, которое было несколько скрыто в сообщение stackoverflow. Оказывается, проблема может быть решена во время подключения (что имеет смысл):
mysql_connect(HOST,USER,PASS,false,128);
Ответ здесь, на страница руководства, оказывается.
Единственное, чего я до сих пор не понимаю, - почему это необходимо в моей новой установке Ubuntu, но никогда не было проблемой ни в какой другой системе, Ubuntu или CentOS.
Я также должен добавить, что вышеупомянутый метод, вероятно, более переносим, чем другие методы, поскольку вы устанавливаете тип соединения в коде, а не в файле конфигурации.
Для пользователей Ubuntu я нашел решение. Эта проблема связана с AppArmor MySQL LOAD DATA INFILE - проблема с AppArmor
Существует возможность разрешить запрос LOAD DATA LOCAL INFILE в /etc/my.cnf:
local-infile = 1
Не забудьте перезапустить MySQL после применения изменений.