PHPについての質問です。

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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/01/10 15:02:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:GoldenDawn No.1

回答回数426ベストアンサー獲得回数81

ポイント2pt

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

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

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

id:t_yasu

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

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

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

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

2009/01/09 17:15:58
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント38pt

"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の両方で用意されている必要があります。

  • ftp/ftps
  • http/https
  • ssh2

参考サイト

id:t_yasu

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

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

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

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

2009/01/09 18:17:08
id:pahoo No.3

回答回数5960ベストアンサー獲得回数633

ポイント20pt

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

echo function_exists('ftp_connect');

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


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

id:t_yasu

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

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

エラーもございません。

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

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

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

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

2009/01/10 08:46:42
id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント20pt

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

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

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

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

id:t_yasu

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

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

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

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

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

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

2009/01/10 11:42:23
id:pahoo No.5

回答回数5960ベストアンサー獲得回数633

ポイント20pt

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

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

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


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

id:t_yasu

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

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

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

2009/01/10 15:01:06

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません