2013-05-24 8 views
5

Ich benutze die MySQL-Bibliothek von PHP. Jedes Mal, wenn ich versuche, einen LOAD DATA LOCAL INFILE Befehl auszuführen, klagt mysqli mit der MeldungBefehl "LOAD DATA LOCAL INFILE" nicht erlaubt

Der verwendete Befehl ist nicht mit dieser MySQL-Version erlaubt

Ich habe nicht das gleiche Problem mit dem Befehl von einem laufenden MySQL-Terminal (muss sich mit --local-infile = 1 anmelden, damit es funktioniert) oder PHPMyAdmin. Nur mein PHP + mysqli Code hat diesen Fehler.

Ich habe versucht, diese Option Einstellung:

mysqli_options($cnx, MYSQLI_OPT_LOCAL_INFILE, 1); 

vor meiner Last Datenanruf, aber immer noch keine Wirkung.

Wie behebe ich dieses Problem?

+0

Welche PHP-Version verwendest du? – Spudley

Antwort

9

Es gibt ein paar Dinge, die falsch sein könnten. Versuchen Sie Folgendes:

auf Ihre my.cnf hinzu:

[mysql] 
local-infile=1 

[mysqld] 
local-infile=1 

lokalen infile aktivieren, wenn sie von PHP

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

zusätzlich eine Verbindung zu genannten „local-infile = 1 "In mysql-Konfigurationsdateien (/etc/mysql/my.cnf) benötigen Sie möglicherweise

[MySQLi] 
mysqli.allow_local_infile = On 

[MySQL] 
mysql.allow_local_infile = On 

in Ihrem System php.ini (/etc/php5/cgi/php.ini oder ähnlich - lokaler php.ini funktioniert nicht)

Und eine andere große Sache - wenn Ihre "open_basedir" in Ihrem php .ini (unabhängig davon, welche Werte enthalten sind), wird die Funktionalität automatisch deaktiviert! Also musst du auf open_basedir aufgeben, wenn du "load data local infile" benutzt (zumindest für PHP 5.4.4, wie in Debian Wheezy)

Verwandte Themen