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); }
他に良いやり方があると思うが、どうなんでしょう。
ディスカッション
コメント一覧
まだ、コメントがありません