• ベストアンサー

phpのftp関数でサーバーから他のサーバーにファイルをアップロードする方法

phpのftp関数でサーバーから他のサーバーにファイルをアップロードする方法が 上手くいかずに困っております。 どなたかご教授ください。 宜しくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

ANo.1です。 補足説明ありがとうございました。 それで、例示されたスクリプトのどこまでが正常に実行されるのでしょうか(具体的にどのような実行結果が得られるのか)? また、ftp_chdir()が成功しているならばFTP サーバ上でのディレクトリ移動は成功していることになります。 それとエラーメッセージは何も出力されていないのでしょうか、設定によりエラーメッセージが出力されないようになっている場合もあるのでこの点も確認したほうがよさそうです。

hunter_999
質問者

お礼

ありがとうございます。 無事解決いたしました。

その他の回答 (1)

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

まずはどの辺が上手くいっていないのかを示されてはどうでしょうか。 今のままでは漠然としすぎて回答も得られにくいかと思います。

hunter_999
質問者

補足

下記のようにしているのですが、ディレクトリの移動まではできていて 送る先のサーバーのディレクトリが違うのかアップロードできませんでした。アップ先のディレクトリを下のディレクトリに移動することも可能なのでしょうか? $ftp_server="サーバー名"; $ftp_user_name="ユーザー"; $ftp_user_pass="パスワード"; //サーバーに接続する $conn_id = ftp_connect($ftp_server); // ユーザ名とパスワードでログインする $login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass); // 接続できたか確認する if((!$conn_id) || (!$login_result)){ echo "FTP接続に失敗しました。"; exit; } else { echo "FTP接続に成功しました。"; } if(ftp_chdir($conn_id,"common/img")){ echo "現在のカレントディレクトリは、「" . ftp_pwd($conn_id) . "」です<br />\n"; } else { echo "ディレクトリを移動できません<br />\n"; } // カレントディレクトリの内容を得る $contents = ftp_nlist($conn_id,"."); // $contents を出力する var_dump($contents); $local_file="error.gif"; $remote_file="error.gif"; if(!ftp_put($conn_id,$remote_file,$local_file,FTP_BINARY)){ echo "FTPアップロードに失敗しました。"; exit; } else { echo "FTPアップロードに成功しました。"; } ftp_close($conn_id);

関連するQ&A

  • phpでFTP関数を有効にする方法

    PHPでFTPサーバにファイルをアップロードしたいんですが、うまくいきません。 接続すらできないので、もしやと思いphp info()で確認したところ、「ftpsupport enable」と表示されないとftp関数が実行されないのではないかと思っています。 ftpsupportを有効にするにはphp.iniのどこを変えればよいのでしょうか。色々調べてみたのですが、見つけることができませんでした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのFTP関数ftp_fgetエラーに関する疑問

    こんにちは PHPでFTPサーバからファイルをダウンロードしようとしていますが、下記のエラーが来ました: PHP Warning: ftp_fget:あと4048バイト以上アップロードする必要があります。..... 同じftp_get関数もほぼ同じメッセージを出しています。 どうすればFTPのファイルをうまくダウンロードできますか? 環境:Apache 2.48 & PHP 5.1

    • 締切済み
    • PHP
  • phpでftpのアップロードができないのですが・・・

    phpでftpコマンドを使ったアップロードができません。どこが間違っているのでしょうか。 ftpで接続してログインするところまでは間違いなくできているのですが・・・よろしくお願いします。 file.php のフォーム部分 <form enctype="multipart/form-data" action="fileupload.php" method="post"> <input type="FILE" name="File"><br>     <input type="SUBMIT" value="送信">     <input type="RESET" vaiue="取消">     </form> fileupload.php のアップロード処理部分 //アップロード後のファイルの名前を仮にaaa.txtとする $file2 = "/public_html/aaa.txt"; if(isset($_REQUEST["File"])){ $file=$_REQUEST["File"]; } $ftp = ftp_connect($hostname) or die("接続失敗"); ftp_login($ftp,$user,$pass) or die("ログイン失敗"); ftp_put($ftp, $file2 , $file , FTP_ASCII) or die("アップロード失敗");

    • ベストアンサー
    • PHP
  • サーバーに負荷の掛けないファイルアップロード方法

    ファイルをアップロードを行う際に負荷のかからない方法を調べています。 AとBの二種類のサーバーがあり、AサーバーにあるWebサイトから、最終的にBサーバーにファイルアップロードします。 Bサーバーへのアップロードをどうするかを検討しています。 Bサーバーでは、ユーザーがアップロードしたファイルを利用し、Aサーバーに加工したデータを返しています。 そこで、ユーザーがローカルにもっているファイルをアップロードする方法をAサーバーに負担が出来る限りかからないようにするにはどうすればよいか考えています。 ブラウザからアップロードするのはファイルサイズが大きくなると、PHPの設定を超えたり、サーバーへの負荷が大きくなってしまいます。 ⇒サイズが大きくなると時間がかかるのと、運用でどれほどのサイズがアップロードされるか想定ができない状態 Bサーバーに直接FTPでファイルをアップロードする ⇒ユーザーは限られたメンバーなので、権限を与えることは可能ですが、ユーザーの変更時に都度対応する必要があるのがネック 最終的にはFTPでアップロードをしてもらう方法になりますが、ブラウザから負担をかけずにアップロードする方法はないでしょうか? AサーバーにおいているWebページからBサーバーに直接アップロードをできるのが理想ですが、ブラウザからだとAサーバーにどうしてもファイルが一時的に保存されてしまうのではと思っています。 よろしくお願いいたします。 言語  PHP 5.2~ OS  Ubuntu

    • 締切済み
    • PHP
  • phpでファイルをアップロードできるか?

    phpでのファイルアップロードについて質問します。 eラーニング教材(htmlで作成)で、動画ファイルをストリーミングさせることになりました。 ウェブサーバ側へのアップロードする画面として、move_uploaded_file()やis_uploaded_file()メソッドをつかっていましたが、ストリーミングサーバ側としてFTP通信でポート20、21からのみのアップロードのみ許可されているとのことです。 ftp_put()メソッドがあるようですが、このメソッドでいいのでしょうか? またこのメソッドでポートの指定はできるのでしょうか。 サーバの知識が弱いもので、まとはずれな質問でしたらごめんなさい。 phpのバージョンは4または5です。 IE7以上のブラウザ環境を想定しています。

    • ベストアンサー
    • PHP
  • phpでファイルをアップロードできるか?

    phpでのファイルアップロードについて質問します。 再質問となりますが、実際にコードを作成してやってみてうまくいかないので、 あらためて質問させていただきました。 eラーニング教材(htmlで作成)で、動画ファイルをストリーミングさせることになりました。 ウェブサーバ側へのアップロードする画面として、move_uploaded_file()やis_uploaded_file()メソッドをつかっていましたが、ストリーミングサーバ側としてFTP通信でポート20、21からのみのアップロードのみ許可されているとのことです。 ftp_put()メソッドを使ってアップロードさせたところうまくいきません。 **************<コード>************* $ftp_server="【サーバー名】"; $ftp_user_name="【アカウント名】"; $ftp_user_pass="【パスワード】"; $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); if ((!$conn_id) || (!$login_result)) { echo "FTP接続に失敗しました。"; exit; } else { echo "FTP接続に成功しました。"; } ここまででFTPの接続はできているようです。 その直後に、 $local_file="【ローカルのファイルパス】"; $remote_file="【FTPサーバー上のアップロードファイルパス】"; if (!ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) { echo "FTPアップロードに失敗しました。"; exit; } else { echo "FTPアップロードに成功しました。"; } **************<コード>************* FTPアップロードに失敗します。 原因がわからなく、こまっています。 ポートの指定が必要なのでしょうか? おしえてください。 よろしくおねがいたします。 **************** FTP supportはenabled になっています。 phpのバージョンは4または5です。 IE7以上のブラウザ環境を想定しています。

    • ベストアンサー
    • PHP
  • FTPサーバでのアップロードができない

    FTPサーバをたてました。TinyFTPDです。 クライアントソフトはFFFTPです。 接続は出来ます。ダウンロードも出来ます。 しかしアップロードが出来ません。 「FFFTPエラー アップロードが出来ませんでした。 450 No privilege for operation.」と出ます。 FTPソフトのアップロードとはそもそもなんですか。 インターネットで調べたのですがよく分かりません。 テキストファイルをLANの他のコンピュータに送ることは出来ないんでしょうか。 ホストの設定で、アドレスが192.168.11.58という プライベートアドレスにしているのが悪いのでしょうか。

  • FTP関数について

    FTP関数についての質問です。 自分のHPからFTPを用いてファイルをダウンロードできるように したいため、FTPサーバに接続してファイルをダウンロードさせる ロジックを作ったのですが、うまくいきません。 というのは、私の作ったFTP処理では、サーバ上で実行されるので、 呼び出し元がサーバになり、ファイルはサーバ上にダウンロード されてしまうのです。 そこで質問なのですが、 PHPのFTP関数は、クライアントからプログラムを実行しないと クライアント側にファイルはダウンロードされないのでしょうか?

    • ベストアンサー
    • PHP
  • PHPでFTP関数を使いたいと考えていますが、

    PHPでFTP関数を使いたいと考えていますが、 いろいろ回ってみても中々使えるサーバに出会えません。 ロリポップでは設定はされているとの記事を見かけたのですが、 ドキュメントルート以下しか使えないなど不便な面が多く使うのは控えようかと考えています。 私の探し方も上手くないのでしょうか・・・。 ある程度金額は高くても良いので(~10000円) ドキュメントルートより上も操作可能で、なおかつPHPとmysqlが使え、 PHPのftp関数がデフォルトもしくは設定にて使用可能なレンタルサーバをご存知の方は お教えいただけないでしょうか? お手数ですがよろしくお願いいたします。

  • PHPのfsockopenを使用してファイルのアップロード方法

    PHPのfsockopenを使用してファイルのアップロード方法 宜しくお願い致します。 PHPでHTTPポートなどに接続させて、POSTやGETでデータを送信できるようにする関数のfsockopenを使用して、HTMLのformを使用せずにPHPプログラムのみでサーバ上にあるファイルを別のサーバへアップロードする方法はありませんか? 文字列を送信する事はできるので、ファイルのアップもできそうなのですが、やり方がわかりません。

    • ベストアンサー
    • PHP

専門家に質問してみよう