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);
}
他に良いやり方があると思うが、どうなんでしょう。


ディスカッション
コメント一覧
まだ、コメントがありません