PHP ftp_put Gagal: Menganalisis Isu dan Menyelesaikannya
Ketidakupayaan ftp_put() berfungsi dengan betul boleh menjadi masalah yang mengecewakan apabila memindahkan fail melalui FTP. Dalam PHP, punca biasa bagi isu ini terletak pada penggunaan lalai mod aktif.
Pemindahan Mod Aktif lwn Pasif
Mod aktif menentukan bahawa pelayan FTP bersambung kepada pelanggan pada port tertentu. Mod pasif, sebaliknya, mempunyai pelayan mendengar pada port rawak, yang kemudiannya diberikan kepada pelanggan. Dalam kebanyakan kes, menggunakan mod pasif adalah perlu, terutamanya apabila pelayan FTP berada di belakang tembok api atau NAT.
Menyelesaikan Isu
Untuk menukar pemindahan FTP PHP kepada pasif mod, seseorang mesti menggunakan fungsi ftp_pasv():
<code class="php">$connect = ftp_connect($ftp) or die("Unable to connect to host"); ftp_login($connect, $username, $pwd) or die("Authorization failed"); // Switch to passive mode ftp_pasv($connect, true) or die("Unable switch to passive mode");</code>
Pertimbangan Tambahan
Dalam sesetengah kes, pelayan FTP mungkin melaporkan alamat IP yang salah sebagai tindak balas kepada arahan PASV. Ini boleh diatasi dengan melumpuhkan penggunaan alamat PASV:
<code class="php">ftp_set_option($connect, FTP_USEPASVADDRESS, false);</code>
Amalan Terbaik
Walaupun penyelesaian di atas dapat mengurangkan masalah, penyelesaian yang optimum adalah dengan konfigurasikan pelayan FTP untuk menggunakan alamat IP dan konfigurasi port yang betul. Ini memastikan operasi yang betul dalam semua senario.
Atas ialah kandungan terperinci Mengapa PHP ftp_put() Gagal: Menganalisis dan Menyelesaikan Isu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!