• ベストアンサー

他サーバのテキストへの書き込みができません。

サーバから別のサーバへ書き込みがしたいのですが、 ファイルを読み込むことができません。ソースは以下になります。アクセス権限なども設定しているのですが、他にどういった問題が考えられるでしょうか? $accesstxt = "http://www.ecstee.jp/rss/login_log.txt"; $fp = fopen($accesstxt,'a'); fwrite($fp,$url.",".$time.","); fclose($fp); どうぞよろしくお願いします。

  • vber
  • お礼率75% (21/28)
  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
noname#24096
noname#24096
回答No.3

エラーメッセージにも出てますし、#2さんのおっしゃる通りだと思いますよ。 (ちょっと考えれば分かると思いますが、これが出来るなら勝手によそのサイトを改竄できることになりますから) 念のため、マニュアルをどうぞ。 http://jp.php.net/manual/ja/wrappers.http.php >HTTP 接続は読み込みのみ可で、HTTP リソースにデータを書き込んだり ファイルをコピーしたりすることはできません。 PHP5以降ならFTPを使えば可能なようです。 http://jp.php.net/manual/ja/wrappers.ftp.php

vber
質問者

お礼

確かに勝手によそのサイトを見るのが可能ですね。エラーになってしまうので、<image src="">でGET情報を送って自サーバで操作するやり方に変更しました。参考URL教えていただきありがとうございました☆

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そもそもhttpプロトコルでfopenをつかって書き込み できましたっけ?"r"専用じゃないですか? ftpならできそうですからそちらでトライしてみては?

vber
質問者

お礼

書き込みはできないですね、他サーバから自サーバに情報を送って自サーバで書き込みをするのが一番手っ取り早いと思いました、ありがとうございます。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

パーミッションを777にしてみる。

vber
質問者

お礼

パーミッション777でもできませんでした(;;)

vber
質問者

補足

パーミッションを777にしても駄目でした。 Warning: fopen(http://www.ecstcee.jp/rss/login_log.txt): failed to open stream: HTTP wrapper does not support writeable connections. と表示されるのですがどうしたらよいでしょう? 初歩的な質問で申し訳ありません。

関連するQ&A

  • 他のサーバーのファイルを大量に読み込んだら迷惑?

     他のサーバーにアクセスして、大量のhtmlファイルを開き、fgets()でそれらを読み込んだら、相手方のサーバーには迷惑になるでしょうか?  (以下のような感じです。URLの部分は、hを大文字で記述しています) <?php $fp = fopen("http://somewhere.org/page1.html","r"); while(!feof()){ $line = fgets($fp); fwrite($fp,$line); } fclose(); $fp = fopen("http://somewhere.org/page2.html","r"); while(!feof()){ $line = fgets($fp); fwrite($fp,$line); } fclose(); //・・・これを数十回くらい。 ?>  又、迷惑になる場合、ファイルを1つ読み込んだあと、sleep();で何秒か停止すれば迷惑かけずに済むでしょうか? もしそうなら、大体何秒くらいでしょうか?

    • ベストアンサー
    • PHP
  • 変数からテキストファイルを保存

    サイトのソースを自動で取得するプログラムを考えいます。 その際にどこのサイトから取得したソースなのかをファイル名で整理したいと考えていますが、変数から自動的にテキストファイルを作ることができません。 どなたかお力をお貸し頂ければ幸いです。 それでは宜しくお願いいたします。 cate.txt======= shopping auction sports ============= <?PHP $Data = file("cate.txt"); for($c=0; $c<sizeof($Data); $c++){ //ここがうまく動いてくれません。。。 $filename == "{$Data[$c]}"."."."txt"; for($i=0; $i<1; $i++){ $url = "http://{$Data[$c]}.yahoo.co.jp/page={$i}"; $lines = file($url); $fp = fopen("data.txt","a"); foreach($lines as $newdata){ fwrite($fp, $newdata); } fclose($fp); } } ?>

    • ベストアンサー
    • PHP
  • ログファイルの古い日付の行を削除する方法について

    下記にアクセスした場合、このプログラムにアクセス時、sample.txtにアクセス記録が保存されますが、このままではログファイルが一方的に多くなります。 その為、例えばもう必要ないと思われる1年以上前のアクセス記録を自動的に削除したいと思ったのですが、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 <?php $fp = fopen("sample.txt", "a+"); flock($fp, LOCK_EX); $log_data = date('YmdHis') . "\n"; fwrite($fp, $log_data); fclose($fp); ?> なお、データベースは使用できないということでお願いします。 また、レンタルサーバを使用しており、サーバ管理者の権限が必要な対応も使用できないということでお願いします。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • fwriteで書き込み

    やりたいことは・・・下に書いていきます。 何がおかしいのか教えてください。 $fp = fopen("example.txt", "r+"); fopenでexample.txtを読み書き可能で開きます。 返り値はポインタですよね。 $fseek = fseek($fp, -3, SEEK_END); $fpで開いたexample.txtのポインタを、ファイルの最後尾から3バイト戻したつもりです。 返り値は 0 成功 -1 失敗 $ftell = ftell($fp); で、今のポインタの位置を確認します。 返り値はポインタ。 fwrite($ftell,$write); $writeの内容を、example.txtの最後から3バイト戻ったところへ書き込み・・・のつもりなのですが。 専門分野ではありませんので、調べてもなかなか進まないです。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • 【PHP】書き込みできません

    PHP5.3の環境でファイル書き込みのロジックがうまくいかずに困っています。 環境は下記の通りです。 Apache 2.2.2 PHP 5.3.3 コードは下記の通りです。 >>CODE $file_path = "/home/xxxxx/logs/test.txt"; echo file_exists($file_path); echo "file_path1=".$file_path; if ( file_exists($file_path) ) { echo "file_path2=".$file_path; // ファイルポインタ取得 if ( ($fp = fopen($file_path, 'a')) !== FALSE ) { // ログは追記 echo "file_path3=".$file_path; // ファイルポインタに書き込み fwrite($fp, $date."\n"); fwrite($fp, $body); fwrite($fp, "----------------------------------------------------\n"); // ファイルポインタクローズ fclose($fp); $flg = true; } } <<CODE 権限は下記の通りです。 logs 777 test.txt 777 現象は下記の通りです。 echo文のfile_path1は表示されます。 echo文のfile_path2及びfile_path3は表示されません。 $file_path="/home/logs/test.txt";に変更すると、 echo文のfile_path1及びfile_path2が表示されます。 echo文のfile_path3は表示されません。 ファイルが存在することはlsで確認したので間違いありません。 権限も777にしているので、何がおかしいのか困り果ててしまい、初めて投稿させて頂きました。 PHPやApacheの設定ファイル等も問題あるのでしょうか。 どうぞご指摘お願いいたします。

  • ファイルに書き込む時の負荷について

    PHPバージョン5.2.4を使っています。 次のような // ------------------------------------ $fp = fopen("data.txt", "w"); $buf = ""; for ($i = 1; $i <= 3; $i++) { $buf .= "aaa$i\n"; } fwrite($fp, $buf); fclose($fp); // ------------------------------------ という変数にいったん保存してから書き込む場合と // ------------------------------------ $fp = fopen("data.txt", "w"); for ($i = 1; $i <= 3; $i++) { $buf = "aaa$i\n"; fwrite($fp, $buf); } fclose($fp); // ------------------------------------ というその都度ファイルに書き込む場合とでは どちらが良い悪いというのはあるのでしょうか? たとえばこちらのやり方は負荷がかかるなど ループが多くなっていった場合に違いがでてくるのでしょうか?

    • ベストアンサー
    • PHP
  • テキストファイルの同期

    はじめまして、超初心者プログラマのmoominといいます。 ファイルの同期プログラムに関して質問があるのですが、 あるテキストファイルを、他のディレクトリのテキストファイルとを 常に同期をするプログラムを作成しています。 これが作成したソースです。 ------------------------- #include "stdafx.h" #include <stdio.h> #include <windows.h> int _tmain(int argc, char *argv[]) { FILE *fp,*copy; int buffer; fp=fopen("○○○/×××.txt","rb"); copy=fopen("aaa/fff.txt","wb"); for(int i=1;i>0;i++){ fread(&buffer,sizeof(buffer),1,fp); fwrite(&buffer,sizeof(buffer),1,copy); if(feof(fp)){ fclose(fp); fclose(copy); } } return 0; } VC2008を利用して作成していますが、 一度きりの同期なら可能なのですが、 常に同期するというプログラムがわかりません。 どう変えればよいでしょうか?

  • PHPのfrrite関数

    お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

    • 締切済み
    • PHP
  • PHP初心者です、教えていただけすか。

    /public_html /test のtest.txtの文字列をtest.phpで表示させたいのですが、 下記の文では表示されません、どこがおかしいのか教えてください。 <?php $fp = fopen ('test.txt', 'w'); $date = "test\n"; var_dump (fwrite($fp, $date)); fclose ($fp); ?>

    • ベストアンサー
    • PHP
  • 書き込みデータのポインタのキャスト変換

    Ç言語初心者です。 あるプログラムソースの一部で、以下のようにfwrite()で書き込みデータのポインタarrayをキャスト変換しています。    FILE *fp; int array[3]; int i; for( i=0; i<3; i++){ array[i] = i; } fp = fopen("sample.tbl","wb"); fwrite( (char *)array, sizeof(array), 1, fp); // (char *)を付ける理由が分からない fclose(fp); (char *)array を array に変更しても結果は変わらないと思いますが、何に影響があるのでしょうか。

専門家に質問してみよう