ここから本文です

【PHP5.2】appendを行いたい PHP 5.2 Windows 10 / Cent OS 6.6 (両方試しました)

kos********さん

2019/3/2012:09:51

【PHP5.2】appendを行いたい
PHP 5.2
Windows 10 / Cent OS 6.6 (両方試しました)

FTPサーバーのファイルに対して、ローカルにあるファイルの内容を追記したいと思います。
PHP7以降では、ftp_appendというコマンドが追加されておりますが、5.2なので使用することができません。
<?php
$conn_id = ftp_connect('192.168.0.1');
// ユーザー名とパスワードでログインする
$login_result = ftp_login($conn_id, 'user', 'pass');

$ret = ftp_raw($conn_id, 'append local.txt remote.txt');

これだと送信されません。
ftp_rawのところを、ftp_execに変えると 'SITE EXEC' not understood in~というエラーがでてしまいます。
ftp_putの4つめの引数にFTP_AUTORESUMEを指定しても、サーバー上のファイルサイズを指定してもダメです。
何か良い方法はご存知でしょうか?

閲覧数:
22
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/3/2013:46:09

phpをローカルで動作させているということでしょうか?それともwebサーバで動作させていてphpスクリプトと同階層にlocal.txtを置いているということですか?

>$ret = ftp_raw($conn_id, 'append local.txt remote.txt');

ftp_raw()の戻り値はどうなっていますか?

サーバからの応答が格納されていると思いますので、エラーがあればその内容が戻っているハズです。


出来ればコマンドラインからFTPサーバに繋いでappendしてみて応答を確認するのがベター(というかphpでどうこうする前にappend可能か確認すべき)です。
コマンドラインからの接続が面倒だったらFTPクライアントソフトで「追記」を試してログビューとかログファイルで確認するとか・・・

  • 質問者

    kos********さん

    2019/3/2015:02:37

    コマンドラインでappendしたらうまくいきました。
    ログもAPPE・・・が出ていました。

    file_put_contentsを使ったらうまくいくようになったので、これを用いようと思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

pri********さん

2019/3/2012:41:23

ftp サーバーによっては append は必ずしもサポートされているわけではないので、一度手動で append を実行して、使える事を確認しましたか?

最悪一度getしてローカルでマージしてからput という手段もありますが、排他を意識する必要が無ければいいのですが

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる