異なるサーバー間でファイルのコピーをしたいと考えております。
例えば画像の場合なのですが、「AAA.com/aaa.jpg」を「BBB.com/image/」の中にコピーさせる場合、
FTP関数を使うのでしょうか?
具体的な記述例などを教えていただければ幸いです。
よろしくお願いいたします。
コメント欄が開いていないのでこちらで。
PHP のスクリプトは AAA.com か BBB.com にあるのでしょうか。
それとも AAA.com でも BBB.com でもないところで実行されるのでしょうか。
"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"ともにレンタルサーバーなのですが、サーバーの問題でしょうか?
ftp_connect が実装されていないというのは考えにくいのですが、
echo function_exists('ftp_connect');
の実行結果をお知らせください。
また、PHPのバージョンをお知らせください。
ご連絡が遅くなり申し訳ございませんでした。
「echo function_exists('ftp_connect');」を実行しても何も表示されませんでした。
エラーもございません。
サーバーの仕様上「phpinfo()」が使えない為、詳しいバージョンは分かりませんが、
PHP5で実行されております。
サーバーの提供会社にて使用可能な関数の一覧があったのですが、「ftp_fput()」や「ftp_connect()」が
ありませんでした。やっぱりサーバーが問題なのでしょうか?
「echo function_exists('ftp_connect');」を実行しても何も表示されませんでした。
うーん、function_exists も禁止されているかもしれませんね。
function_exists が使えなかったら、phpinfo を実行してもらおうと考えていたんですが(phpinfo にも ftp の情報が出ます)、それも駄目だとなると――サーバの制約だと思われるので、サーバの管理者にお問い合わせになってください。
FTP を不許可にしているとすると、他のプロトコルも難しいかもしれません。これについても、サーバ管理者にお問い合わせになってみて下さい。
ご回答ありがとうございます。
やはりサーバの制約が厳しいのが原因なのですね。残念ですがこの方法が諦めます。
pahooさんが「http://q.hatena.ne.jp/1208575654」で回答されている方法も試してみたいのですが、
クラスがよく分かりません。
何かヒントになるようなことがあれば教えていただければ幸いです。
よろしくお願いいたします。
何かヒントになるようなことがあれば教えていただければ幸いです。
当時のリンク先が一時的に閉鎖されていますね。
海外サイトになりますが、FTPクラスのサンプル・ソースがあります。「HTTP Class for PHP (supports both cURL and fsockopen)」をご覧下さい。この内容について分からないことがありましたら、別質問を立てていただいた方がよろしいかと存じます。
ただし、ご利用のサーバではFTPプロトコル自身が禁止されている可能性がありますので、その場合は、どのような手段を使ってもFTPアクセスはできません。dev_zer0 さんがコメントしているように、nfs を用いるなど、まったく別のアプローチをとった方がいいでしょう。
ご丁寧にありがとうございます。
他の方法を検討してみたいと思います。
色々とお世話になりました。
早速ありがとうございます。
コメントの表示の意味がよく分かっておりませんで…。表示するに変更しました。
さて、PHPのスクリプトは「AAA.com」に設置する方向で考えております。
ご検討よろしくお願いいたします。