Et hurtigt uddrag fra dokumentationen af LOAD_FILE() MySQL-funktion:
SOM du kan se, er der utallige grunde til dit opkald til LOAD_FILE() mislykkes:
-
Filen skal være til stede på den computer, hvor MySQL-serveren kører. Dette er ikke altid den samme computer som den, hvor PHP-scriptet kører (og dette sker af sikkerhedsmæssige årsager). Hvis de kører på forskellige computere, kan du højst sandsynligt ikke bruge
LOAD_FILE(). Sagen er afsluttet.I teorien kunne du bruge
FTPellerSFTPat overføre filen til den computer, hvor MySQL kører, men af samme sikkerhedsmæssige årsager har du sandsynligvis ikke adgang til den computer. -
Hvis du antager, at både PHP og MySQL kører på den samme computer,
/images/picture.jpger URL'ens stikomponent, ikke en sti på filsystemet. Du kan brugedirname()og__DIR__for at sammensætte stien tilbilledernemappe, der starter fra stien til det aktuelle script. -
Den bruger, du bruger til at oprette forbindelse til MySQL-serveren, skal have
FILprivilegium. Rettigheden er givet til brugeren af en DBA. -
Filen skal kunne læses af alle. Dette er den nemmeste del. Når du kører
ls -lpå filen skal de sidste tre symboler i kolonnen med filrettigheder værerw-ellerr--(det nytter ikke at have den eksekverbare bit indstillet). -
Standardværdien for
max_allowed_packetsystemvariablen er4 MiBmen en DBA kan ændre det. Du kan køreSELECT @@max_allowed_packet FROM dualfor at finde ud af dens aktuelle værdi. -
Hvis
secure_file_privsystemvariablen er indstillet, så skal stien du angiver være i forhold til denne mappe. Igen kan du køreSELECT @@secure_file_priv FROM dualfor at finde dens aktuelle værdi.