6

私はこれを毎朝探していました。

サーバー上のフォルダーを複製し、必要に応じて一時的にアクセス許可を変更する単純なPHP関数はありますか?基本的に、FTPを使用してフォルダ全体をコピーしてから再度バックアップするPHPの代替手段はありますか?

オンラインで見つけた以下の機能を試しましたが、おそらく権限が原因で何も起こりません。私はそれを試してみましたがerror_reporting(E_ALL);、それぞれの戻り値も確認しましたがcopy()、すべてfalseを返します。

copy_directory('/directory1','/directory2') 

function copy_directory($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ( $file = readdir($dir)) ) { 
        if (( $file != '.' ) && ( $file != '..' )) { 
            if ( is_dir($src . '/' . $file) ) { 
                copy_directory($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
        } 
    } 
    closedir($dir); 
}  
4

2 に答える 2

7

バウンティを投稿した後、サーバーサポートチケットへの返信を受け取りました。これは、権限が問題であるという私の信念を確認するものです。

PHPのコピー許可を与えるためのサーバー側の簡単な変更により、この問題は解決しました。

于 2012-11-19T10:06:15.130 に答える
1

これらの行に沿って、コード内の重複をチェックするのはどうですか?

<?php
if(!file_exists($dst)) {
    mkdir($dst);
}
else {
    $i = 1;
    $duplicate_folder = true;
    while ($duplicate_folder == true) {
        if(file_exist($dst) {
            $new_dst = $dst."_".$i;
            mkdir($new_dst);
            $i++;
        }
        else {
            $duplicate_folder = false;
        }
    }
}
?>
于 2012-11-15T11:23:54.323 に答える