PHP5 + MySQL load data local infile Error 1148 | 17.04.2014 13:27 |
|
Der MySQL-Befehl "load data [local] infile" ist Aufgrund möglicher Sicherheitsrisiken nicht empfehlenswert.
Siehe: https://dev.mysql.com/doc/refman/5.1/de/load-data-local.html
Wer es dennoch unbeding benutzen muss, sollte folgende Voraussetzungen schaffen, um nicht mit
"Error #1148 - The used command is not allowed with this MySQL version" zu enden.
a) in der Datei /etc/mysql/my.cnf müssen folgende Einträge stehen:
[client]
loose-local-infile=1
[mysqld]
local-infile=1
[mysql]
local-infile=1
Danach muss der MySQL-Service neu gestartet werden.
b) in der /etc/php5/apache2/php.ini muss bei der zu verwendenden MySQL-Extension
mysql, mysqli, mysqlnd, pdo_mysql der entsprechende Eintrag stehen, z.B.:
[mysql]
mysql.allow_local_infile = On
c)
Der Datenbank-User muss das Recht "file" haben, um den Befehl nutzen zu können. Danach ggf. die Rechte neu laden.
d)
Danach sollte es eigentlich schon funktionieren, außer man benutzt die o.g. alten
mysql_xxx Konnektoren. Dort ist zu beachten, dass der Befehl nur klappt, wenn man mysql_connect() mit
dem Parameter 128 aufruft, also: mysql_connect($host,$user,$pass,false,128);
Ansonsten bleibt es bei MySQL-Fehler #1148 |