スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] ローカルファイルを別のサーバにFTP通信してコピーしたい

ロードバランサ使ってるサーバで、アップロードされたファイルを
他のサーバにも同じファイルを設置しなければならないときとか。

当然ながら他のサーバに copy() が使えるわけもないので、FTP通信をして
ファイルを送り込むこととします。

ただFTP関数についてはデフォルトでは入ってないようなので、
レンタルサーバなら使うのをあきらめないといけないかも。
そもそもレンタルサーバを使ってる時点でそういうニーズはないかと思いますが。

PHP: FTP関数 インストール手順
http://www.php.net/manual/ja/ftp.installation.php

PHP で FTP 関数を使用するには、PHP をインストールする際に --enable-ftp オプションを追加する必要があります。

Windows 版の PHP にはこの拡張モジュールのサポートが組み込まれています。これらの関数を使用するために拡張モジュールを追加でロードする必要はありません。



FTP関数使わないでどうしても他のサーバに送り込みたいときは、
試してないけどスクリプトの中でPOST送信して、受け側のサーバに
それ受けとって処理するスクリプトを置いておけばいけそうな気もする。

とりえあずFTP送信するのはこんな感じで。

function putFileFtp( $f, $f_to, $host, $port, $timeout, $id, $pass ){

//戻り値
$ret = 0;
// 接続を確立
$conn = ftp_connect( $host, $port, $timeout );
// ログインする
$login_result = ftp_login( $conn, $id, $pass );
// ファイルをアップロードする
if (ftp_put( $conn, $f_to, $f, FTP_BINARY )) {
echo "アップロード成功 ".$f." to ".$f_to."\n";
$ret = 1;
} else {
echo "アップロード中にエラー ".$f."\n";
$ret = -1;
}
// 接続を閉じる
ftp_close( $conn );
return( $ret );
}
//---------------------------------
// 上記関数を使った処理
//---------------------------------
$f = "./test.jpg";
//試しに時間を入れている。パスはFTPログインしたときに見える形で
$f_to = "/public_html/ftp_test/test".date( "His" ).".jpg";
//送信したいサーバのIP(ダミー)
$ftp_host = "999.999.999.999";
//ポート
$ftp_port = 21;
//タイムアウトの時間
$ftp_timeout = 20;
//FTPログインID
$ftp_id = "xxxxxxx";
//FTPログインパスワード
$ftp_pass = "pppppppppp";

$ret = putFileFtp( $f, $f_to, $ftp_host, $ftp_port, $ftp_timeout, $ftp_id, $ftp_pass );
if( $ret > 0 ){
print "FTP OK";
}else{
print "FTP NG";
}
?>


それぞれの関数の使い方はマニュアルを参照ください。

PHP: 一覧 - FTP 関数
http://php.plus-server.net/ref.ftp.html
関連記事
スポンサーサイト

テーマ : PHP
ジャンル : コンピュータ

comment

管理者にだけメッセージを送る

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。