首頁 >後端開發 >PHP問題 >php ftp_put 上傳失敗怎麼辦

php ftp_put 上傳失敗怎麼辦

藏色散人
藏色散人原創
2020-08-22 09:36:413446瀏覽

php ftp_put上傳失敗是因為伺服器放在防火牆後面,其解決方法就是開啟FTP被動模式,程式碼如「ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0 );」。

php ftp_put 上傳失敗怎麼辦

推薦:《PHP視訊教學

客戶端在防火牆之後,php利用ftp上傳檔案時候ftp_put失敗

<?php
$conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
ftp_login($conn,"test","test1234");
ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
ftp_close($conn);
echo "done";
?>

程式碼說明:

本程式碼透過PHP伺服器在後台使用FTP 協定將本機檔案「local.rar」 上傳到遠端FTP 檔案伺服器上,並儲存為「target.rar 」。即PHP 伺服器以FTP Client 上傳檔案到FTP Server...

以上程式碼執行後出錯,錯誤提示如下:

Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection for target.rar. in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 4
 
Fatal error: Maximum execution time of 60 seconds exceeded in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 5

出錯原因:

伺服器一般都是放在防火牆後面,因此FTP 用戶端程式如果需要穿越防火牆,需要開啟被動模式,否則執行任何ftp 命令都沒有回應,直到出現「最大執行時間逾時」 的致命錯誤,導致程式終止執行...

ftp_pasv($conn, true);

解決方法:開啟FTP 被動模式,正確程式碼如下:

<?php
$conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
ftp_login($conn,"test","test1234");
ftp_pasv($conn, true);
ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
ftp_close($conn);
echo "done";
?>

以上是php ftp_put 上傳失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn