0

私のウェブサイトでは、VPS のメイン アカウントから (自動的に) 新しく作成された cPanel アカウントに 1 つのフォルダーをコピーする必要があります。次のコード(関数)を使用して、FTP経由でPHPでこれを実行しようとしました:

function ftp_sync ($dir) { 
    global $conn_id;

    if ($dir != ".") { 
            if (ftp_chdir($conn_id, $dir) == false) { 
                echo ("Change Dir Failed: $dir<BR>\r\n"); 
                return; 
            } 
            if (!(is_dir($dir))) 
                mkdir($dir); 
        chdir ($dir); 
    } 

        $contents = ftp_nlist($conn_id, "."); 
    foreach ($contents as $file) { 

            if ($file == '.' || $file == '..') 
            continue; 

            if (@ftp_chdir($conn_id, $file)) { 
                    ftp_chdir ($conn_id, ".."); 
                    ftp_sync ($file); 
        } 
            else 
            ftp_get($conn_id, $file, $file, FTP_BINARY); 
        }
    }

    foreach (glob("*") as $file)
    {
        if(substr_count($file, ".") > 0)
        {
            $source_file = $file;
            $destination_file = $file;
            $upload = ftp_put($conn_id, "public_html/".$destination_file, $source_file, FTP_BINARY);
            echo "<br />";
            // check upload status
            if (!$upload) { 
                echo "FTP upload has failed!";
            } else {
                echo "Uploaded $source_file to $ftp_server as $destination_file";
            }
        }else{
            ftp_sync($dir);
        }
    } 


    ftp_chdir ($conn_id, "..");
        chdir ("..");  

} 

ただし、機能していないようです (新しいディレクトリが作成されてアップロードされることはありません)...これが機能しない理由と、それを機能させる方法を知っている人はいますか?

前もって感謝します!

よろしく、スカイフ。

編集:スクリプトをcronjobスクリプトとして実行することを忘れていました。また、メインサーバーから実行されるため、すべての権限があることを確認してください。

4

2 に答える 2

1

まず、ターゲット サーバー上のディレクトリが書き込み可能であることを確認します。一時的に 0777 に chmod すると役立つはずです。スクリプトの残りの部分は問題ないようです。エラー ログをすべてのエラーに設定してみてerror_reporting(E_ALL);ください (スクリプトの先頭に追加するだけです)。その後、PHP はすべてのエラー、警告、または通知を出力し、詳細情報を提供する可能性があります。

于 2013-10-27T14:52:54.293 に答える