Kutipan singkat dari dokumentasi LOAD_FILE()
Fungsi MySQL:
Seperti yang Anda lihat, ada banyak sekali alasan panggilan Anda ke LOAD_FILE() gagal:
-
File harus ada di komputer tempat server MySQL berjalan. Komputer ini tidak selalu sama dengan komputer tempat skrip PHP dijalankan (dan ini terjadi karena alasan keamanan). Jika mereka berjalan di komputer yang berbeda maka kemungkinan besar Anda tidak dapat menggunakan
LOAD_FILE(). Kasus ditutup.Secara teori Anda bisa menggunakan
FTPatauSFTPuntuk mentransfer file di komputer yang menjalankan MySQL tetapi untuk alasan keamanan yang sama, Anda mungkin tidak memiliki akses ke komputer tersebut. -
Dengan asumsi dalam kasus Anda PHP dan MySQL berjalan di komputer yang sama,
/images/picture.jpgadalah komponen jalur URL, bukan jalur pada sistem file. Anda dapat menggunakandirname()dan__DIR__untuk menyusun jalur keimagesdirektori mulai dari jalur skrip saat ini. -
Pengguna yang Anda gunakan untuk terhubung ke server MySQL harus memiliki
FILEhak istimewa. Hak istimewa diberikan kepada pengguna oleh DBA. -
File harus dapat dibaca oleh semua orang. Ini adalah bagian yang paling mudah. Saat Anda menjalankan
ls -lpada file, tiga simbol terakhir pada kolom hak file harusrw-ataur--(tidak ada gunanya mengatur bit yang dapat dieksekusi). -
Nilai default
max_allowed_packetvariabel sistem adalah4 MiBtetapi DBA dapat mengubahnya. Anda dapat menjalankanSELECT @@max_allowed_packet FROM dualuntuk mengetahui nilainya saat ini. -
Jika
secure_file_privvariabel sistem diatur maka jalur yang Anda berikan harus relatif terhadap direktori ini. Sekali lagi, Anda dapat menjalankanSELECT @@secure_file_priv FROM dualuntuk menemukan nilainya saat ini.