人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについての質問です。
異なるサーバー間でファイルのコピーをしたいと考えております。
例えば画像の場合なのですが、「AAA.com/aaa.jpg」を「BBB.com/image/」の中にコピーさせる場合、
FTP関数を使うのでしょうか?
具体的な記述例などを教えていただければ幸いです。
よろしくお願いいたします。

●質問者: t_yasu
●カテゴリ:ウェブ制作
✍キーワード:.jpg aaa FTP PHP コピー
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● GoldenDawn
●2ポイント

コメント欄が開いていないのでこちらで。

PHP のスクリプトは AAA.com か BBB.com にあるのでしょうか。

それとも AAA.com でも BBB.com でもないところで実行されるのでしょうか。

◎質問者からの返答

早速ありがとうございます。

コメントの表示の意味がよく分かっておりませんで…。表示するに変更しました。

さて、PHPのスクリプトは「AAA.com」に設置する方向で考えております。

ご検討よろしくお願いいたします。


2 ● pahoo
●38ポイント

"AAA.com" と "BBB.com" がどんなプロトコルを用意しているかによります。

一般的には ftp ですが、万が一にも BBB.com 側で ftp サーバが動作していないと、この方法をとることはできません。


FTPを使った画像ファイルのアップロード手順は以下の通り。

$conn_id = ftp_connect(FTPサーバ名, 21, タイムアウト秒数);
$login_result = ftp_login($conn_id, ユーザー名, パスワード);
ftp_chdir($conn_id, FTPアップ先フォルダ名);
$infp = fopen(アップするファイル名, 'r');
ftp_fput($conn_id, アップするファイル名, $infp, FTP_BINARY);
fclose($infp);
ftp_close($conn_id);

その他、PHPではサーバ間通信に下記のようなプロトコルを利用することができます。いずれも、サーバとPHPの両方で用意されている必要があります。


参考サイト

◎質問者からの返答

ご回答ありがとうございます。

教えていただいたスクリプトを実行してみたところ、

「Fatal error: Call to undefined function ftp_connect()...」となってしまいました。

"AAA.com" と "BBB.com"ともにレンタルサーバーなのですが、サーバーの問題でしょうか?


3 ● pahoo
●20ポイント

ftp_connect が実装されていないというのは考えにくいのですが、

echo function_exists('ftp_connect');

の実行結果をお知らせください。


また、PHPのバージョンをお知らせください。

◎質問者からの返答

ご連絡が遅くなり申し訳ございませんでした。

「echo function_exists('ftp_connect');」を実行しても何も表示されませんでした。

エラーもございません。

サーバーの仕様上「phpinfo()」が使えない為、詳しいバージョンは分かりませんが、

PHP5で実行されております。

サーバーの提供会社にて使用可能な関数の一覧があったのですが、「ftp_fput()」や「ftp_connect()」が

ありませんでした。やっぱりサーバーが問題なのでしょうか?


4 ● pahoo
●20ポイント

「echo function_exists('ftp_connect');」を実行しても何も表示されませんでした。

うーん、function_exists も禁止されているかもしれませんね。

function_exists が使えなかったら、phpinfo を実行してもらおうと考えていたんですが(phpinfo にも ftp の情報が出ます)、それも駄目だとなると――サーバの制約だと思われるので、サーバの管理者にお問い合わせになってください。

FTP を不許可にしているとすると、他のプロトコルも難しいかもしれません。これについても、サーバ管理者にお問い合わせになってみて下さい。

◎質問者からの返答

ご回答ありがとうございます。

やはりサーバの制約が厳しいのが原因なのですね。残念ですがこの方法が諦めます。

pahooさんが「http://q.hatena.ne.jp/1208575654」で回答されている方法も試してみたいのですが、

クラスがよく分かりません。

何かヒントになるようなことがあれば教えていただければ幸いです。

よろしくお願いいたします。


5 ● pahoo
●20ポイント

何かヒントになるようなことがあれば教えていただければ幸いです。

当時のリンク先が一時的に閉鎖されていますね。

海外サイトになりますが、FTPクラスのサンプル・ソースがあります。「HTTP Class for PHP (supports both cURL and fsockopen)」をご覧下さい。この内容について分からないことがありましたら、別質問を立てていただいた方がよろしいかと存じます。


ただし、ご利用のサーバではFTPプロトコル自身が禁止されている可能性がありますので、その場合は、どのような手段を使ってもFTPアクセスはできません。dev_zer0 さんがコメントしているように、nfs を用いるなど、まったく別のアプローチをとった方がいいでしょう。

◎質問者からの返答

ご丁寧にありがとうございます。

他の方法を検討してみたいと思います。

色々とお世話になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ