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

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

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

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

 

<br />
// FTP接続<br />
$ftp_server = &quot;ftp.example.com&quot;; // FTPサーバー<br />
$ftp_user = &quot;ftp_user&quot;;          // ユーザー名<br />
$ftp_pass = &quot;ftp_pass&quot;;          // パスワード<br />
$ftp_dir_path = &quot;FTPDIR/&quot;;       // FTPサーバー上のディレクトリパス</p>
<p>// FTP接続確立<br />
$conn_id = ftp_connect($ftp_server);</p>
<p>// ユーザ名とパスワードでログイン<br />
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pw);</p>
<p>// 接続確認<br />
if ((!$conn_id) || (!$login_result)){<br />
    echo &quot;FTP接続失敗!&quot;;<br />
} else {<br />
    // パッシブモードON<br />
    ftp_pasv($conn_id, true);</p>
<p>    // サンプルとしてPHPサーバー上に空CSV作成<br />
    $local_file = &quot;test.csv&quot;;<br />
    touch($local_file);</p>
<p>    $server_file = $ftp_dir_path . $local_file;</p>
<p>    // ファイルをアップロードする<br />
    if (ftp_put($conn_id, $server_file, $local_file, FTP_ASCII)) {<br />
        // アップロードが成功したらPHPサーバー上のCSV削除<br />
        unlink($local_file);<br />
    } else {<br />
        echo &quot;ファイルをアップロードできません。&quot;;<br />
    }</p>
<p>    ftp_close($conn_id);<br />
}<br />

 

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