Ett snabbt utdrag ur dokumentationen för LOAD_FILE() MySQL-funktion:
SOM du kan se finns det många anledningar till att du ringer till LOAD_FILE() misslyckas:
-
Filen måste finnas på datorn där MySQL-servern körs. Det här är inte alltid samma dator som den där PHP-skriptet körs (och detta sker av säkerhetsskäl). Om de körs på olika datorer kan du antagligen inte använda
LOAD_FILE(). Ärendet avslutat.I teorin kan du använda
FTPellerSFTPför att överföra filen till datorn där MySQL körs men av samma säkerhetsskäl har du förmodligen inte tillgång till den datorn. -
Förutsatt att i ditt fall både PHP och MySQL körs på samma dator,
/images/picture.jpgär sökvägskomponenten i URL:en, inte en sökväg i filsystemet. Du kan användadirname()och__DIR__för att skapa sökvägen tillbildernakatalog som börjar från sökvägen till det aktuella skriptet. -
Användaren du använder för att ansluta till MySQL-servern måste ha
FILprivilegium. Behörigheten ges till användaren av en DBA. -
Filen måste vara läsbar för alla. Detta är den enklaste delen. När du kör
ls -lpå filen måste de tre sista symbolerna i kolumnen med filrättigheter vararw-ellerr--(det är ingen idé att ha den körbara biten inställd). -
Standardvärdet för
max_allowed_packetsystemvariabeln är4 MiBmen en DBA kan ändra det. Du kan köraSELECT @@max_allowed_packet FROM dualför att ta reda på dess nuvarande värde. -
Om
secure_file_privsystemvariabeln är inställd så måste sökvägen du anger vara relativ till denna katalog. Återigen kan du köraSELECT @@secure_file_priv FROM dualför att hitta dess nuvarande värde.