だから私はフォルダとすべてのコンテンツ(サブフォルダを含む)のローカルコピーを作成してリモートサーバーにコピーを送信する関数を作成しようとしています、ローカルコピーは問題ありませんが、ftpコピーはそのようにフォーマットされていませんしたほうがいい。それらは両方ともすべてのファイルを持っていますが、ftpバージョンはファイル構造を正しくフォーマットしていません。調べましたが、この問題のある投稿は見つかりませんでした。そのため、ポインタがあれば役に立ちます。
例:正しい
- 主要
- サブ1
- サブ2
- サブ3
- サブ4
- 4-1のサブ
- 4-2のサブ
しかし、これは私が得るものです、
- 主要
- サブ4
- サブ0f4-1
- サブ0f4-2
- サブ3
- サブ2
- サブ1
- サブ2
- サブ3
- サブ0f4-2
- サブ0f4-1
- サブ4
function copyr($source, $dest, $conId) {
$sourceName = explode('/',$dest);
$sourceName = $sourceName[count($sourceName)-1];
// copy file
if (is_file($source)) {
$upLink = ftp_fput($conId, $sourceName, fopen($source, 'r'), FTP_ASCII);
return copy($source, $dest);
}
// Make destination directory
if (!is_dir($dest)) {
mkdir($dest);
ftp_mkdir($conId, $sourceName);
ftp_chdir($conId, $sourceName);
} else if(is_dir($dest)){ // go to one that has been made.
ftp_chdir($conId, $sourceName);
}
// Loop the folder
$dir = dir($source);
while (false !== $entry = $dir->read()) {
// Skip pointers
if ($entry == '.' || $entry == '..') {
continue;
}
// Copy sub directories
if ($dest !== "$source/$entry") {
copyr("$source/$entry", "$dest/$entry", $conId, $entry);
}
}
// Clean up
$dir->close();
return true;
}
$source = 'images';
$dest = 'NewImages';
if(copyr($source, $dest, $conId)){
echo "It's finished .... Good.";
} else {
echo "Failed ... ";
}
ftp_close($conId);
この一部は、ftpの.netマニュアルを確認した後、php.netから他の部分をまとめてコピーしました。
ありがとう。