MySQL PHP configuration does not allow LOAD DATA LOCAL INFILE

importMySQLPHP

I tried adding lines to my.cnf

[mysql]
infile = 1
[mysqld]
infile = 1

SHOW VARIABLES LIKE "%infile" displays true in mysql.

But LOAD DATA does not work. I tried it in a PHP script and in phpMyAdmin.

It only works if I start mysql from the command line with the --allow-infile flag

mysql --local-infile -u root -p db_name

But this did not solve the PHP problem.

Best Answer

I finally solved the issue in what seems like a ridiculously simple way. I've seen so many posts regarding this problem but the only solution I found that worked was one that was somewhat hidden in a stackoverflow post. It turns out the issue can be solved at connect time (which makes sense):

mysql_connect(HOST,USER,PASS,false,128);

The answer is right there on the manual page, it turns out.

The only thing I still don't understand is why this is necessary on my new Ubuntu install but has never been a problem on any other system, Ubuntu or CentOS.

I should also add that the above method is probably more portable than other methods, since you are setting the connection type in the code rather than in a config file.