ftp_get に少し問題があります。Centos 6 で実行されているローカル開発サーバーで実行すると、スクリプトは機能しません。
私はスタック オーバーフローについていくつかの調査を行い、ほとんどのソリューションを試してみましたが、機能しませんでした。
Centos 5.x + cPanel を実行している運用サーバーで同じスクリプトをテストしましたが、動作しています。
ローカルサーバーでこれが発生する原因は何ですか?
ファイル転送が機能するための特定の設定はありますか?
これまでに試したことのリストは次のとおりです。
エラー、
error_reporting(E_ALL)
およびエラーがあるかどうかを確認します。それらはありませんでした。パッシブ接続です
ftp_pasv($connection, true)
が、何も変わりません。転送モード、FTP_BINARY と FTP_ASCII を試しました。何も変わりません。
ファイルハンドラーを使用してローカルサーバーに保存しようとしましたが、どちらも機能しませんでした。
元のスクリプトはバッチで実行されます (指定されたファイル名のフォルダー内のすべてのファイルをダウンロードします)。そのスクリプトを実行すると、ファイルの 3/4 が「dev」サーバーに正常に転送されたと言えます。
それらの約1/4だけが「失敗」したと言います。そのため、次のスクリプトを使用して、バッチ転送中に失敗したいくつかのファイルをトラブルシューティング/テスト ダウンロードしました。
このスクリプトを使用した転送にも失敗しました。
遠隔サーバーのすべての権限 (chmod) を確認しました。すべてが 666 に設定されています。
これが私が使用しているコードです。php.netの例と非常によく似ています
// Connection to ftp
$connection = ftp_connect($hostname);
// Login to the FTP
$login = ftp_login($connection, $username, $password);
// Passive might help?
ftp_pasv($connection, true);
// Test login
if ((!$connection) || (!$login)) {
echo "FTP Connection failed<br /><br />";
exit;
} else {
echo "Connection success<br /><br />";
}
$local_file = 'file.zip';
$server_file = 'file.zip';
// Download and save file
if (ftp_get($connection, $local_file, $server_file, FTP_ASCII)){
echo "Download win <br />";
} else {
echo "Download failed <br />";
}
御時間ありがとうございます、