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
FTP
atauSFTP
untuk 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.jpg
adalah komponen jalur URL, bukan jalur pada sistem file. Anda dapat menggunakandirname()
dan__DIR__
untuk menyusun jalur keimages
direktori mulai dari jalur skrip saat ini. -
Pengguna yang Anda gunakan untuk terhubung ke server MySQL harus memiliki
FILE
hak 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 -l
pada file, tiga simbol terakhir pada kolom hak file harusrw-
ataur--
(tidak ada gunanya mengatur bit yang dapat dieksekusi). -
Nilai default
max_allowed_packet
variabel sistem adalah4 MiB
tetapi DBA dapat mengubahnya. Anda dapat menjalankanSELECT @@max_allowed_packet FROM dual
untuk mengetahui nilainya saat ini. -
Jika
secure_file_priv
variabel sistem diatur maka jalur yang Anda berikan harus relatif terhadap direktori ini. Sekali lagi, Anda dapat menjalankanSELECT @@secure_file_priv FROM dual
untuk menemukan nilainya saat ini.