FTP経由で別サーバー上にファイル作成

PHPを実行しているサーバーから、別サーバーにFTPで接続してファイルを作成する仕組みが必要となった。

ftp_exec()関数を利用して直接FTP上でファイルを作成しようとしたが、
PHP Warning:  ftp_exec(): Unknown SITE command.
と言われてしまう。

しょうがないので、PHPサーバー上でファイルを作成し、そのファイルをFTPで転送。
転送が成功したらPHPサーバーからファイルを削除という回りくどいやり方で対処。
以下、空ファイルの作成~FTPアップロードの流れ。

 

// FTP接続
$ftp_server = "ftp.example.com"; // FTPサーバー
$ftp_user = "ftp_user";          // ユーザー名
$ftp_pass = "ftp_pass";          // パスワード
$ftp_dir_path = "FTPDIR/";       // FTPサーバー上のディレクトリパス

// FTP接続確立
$conn_id = ftp_connect($ftp_server);

// ユーザ名とパスワードでログイン
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pw);

// 接続確認
if ((!$conn_id) || (!$login_result)){
    echo "FTP接続失敗!";
} else {
    // パッシブモードON
    ftp_pasv($conn_id, true);

    // サンプルとしてPHPサーバー上に空CSV作成
    $local_file = "test.csv";
    touch($local_file);

    $server_file = $ftp_dir_path . $local_file;

    // ファイルをアップロードする
    if (ftp_put($conn_id, $server_file, $local_file, FTP_ASCII)) {
        // アップロードが成功したらPHPサーバー上のCSV削除
        unlink($local_file);
    } else {
        echo "ファイルをアップロードできません。";
    }

    ftp_close($conn_id);
}

 

他に良いやり方があると思うが、どうなんでしょう。


PAGE TOP