2013-05-24 11 views
5

Sto usando la libreria PHP mysqli. Ogni volta che si tenta di eseguire un comando LOAD DATA LOCAL INFILE, mysqli si lamenta con il messaggio"Load local local infile" comando non consentito

il comando utilizzato non è consentito con questa versione di MySQL

non ho lo stesso problema con l'esecuzione del comando da un Terminale MySQL (devi effettuare il login con --local-infile = 1 per farlo funzionare) o PHPMyAdmin. Solo il mio codice PHP + mysqli presenta questo errore.

Ho provato a installare questa opzione:

mysqli_options($cnx, MYSQLI_OPT_LOCAL_INFILE, 1); 

prima della mia chiamata dati di carico, ma ancora nessun effetto.

Come si risolve questo problema?

+0

Quale versione di PHP stai usando? – Spudley

risposta

9

Ci sono un paio di cose che potrebbero essere sbagliati. Provare quanto segue:

Aggiungi alla tua my.cnf:

[mysql] 
local-infile=1 

[mysqld] 
local-infile=1 

Abilita infile locale durante la connessione da PHP

$conn = mysqli_init(); 
mysqli_options($conn, MYSQLI_OPT_LOCAL_INFILE, true); 
mysqli_real_connect($conn,server,user,code,database); 
0

oltre al citato "local-infile = 1 "nei file di configurazione mysql (/etc/mysql/my.cnf), potrebbe essere necessario

[MySQLi] 
mysqli.allow_local_infile = On 

[MySQL] 
mysql.allow_local_infile = On 

nel php.ini sistema (/etc/php5/cgi/php.ini o simili - php.ini locale non funziona)

E un'altra grande cosa - se la vostra utilizzando "open_basedir" nel tuo php .ini (indipendentemente da quali siano i valori), la funzionalità verrà disattivata automaticamente! Quindi devi rinunciare allo open_basedir se stai usando "load data local infile" (almeno per PHP 5.4.4, come si trova in Debian Wheezy)