• 締切済み

fputsに関して

php初心者です。 ファイル書き込みで困っているので知っている方がいたら教えて下さい。 環境はphp5です。 //////////////////////////////////////// $fp = @fopen("書き込むファイルへのパス", "w") or die ("error\n"); fputs($fp, "<?php include(\"test.inc\"); ?>"); //////////////////////////////////////// 上記のようにしたいと考えていますが、上手く出来ません・・・。 書き込んだテキストがphpで、それを動作させたいです。 色々調べては見てるのですが、そのようなドキュメントが見つからなく困っております。 よろしくお願いします。

みんなの回答

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.2

> fputs($fp, "<?php include(\"http://www.goo.ne.jp/test.inc\"); ?>"); > 上記部分が、表示されていない状況です。 include の引数に URL が指定された場合の動作は環境により異なります。 PHP: include - Manual http://jp2.php.net/include/ 上記 URL から一部引用 > "URL fopenラッパー"が 有効になっている場合(デフォルト設定では有効です)、 > ローカルなパス名 の代わりにURL(HTTP経由)を用いて読み込むファイルを指定 > することが可能です。 > URLで指定されたサーバがファイルをPHPコードとして解釈することが 出来る場合には、 > HTTP GETを使用してURLリクエストに引数を指定することが 出来ます。 > これはファイルの読み込み云々やスコープの継承とは関係なく、 ただ単純にスクリプトが > リモートのサーバで実行されて結果がローカルの スクリプトに読み込まれる、というだけのことです。 というように動作させている環境の「URL fopenラッパー」が無効になっている場合や URL のサイトの 環境等によっては期待した動作が得られないかもしれません。 それと、質問の時点と補足での内容が微妙に異なっていて何をなさりたいのかが よくわかりません。 それと fputs は fwrite のエイリアス(別名)に過ぎません。 PHP: fputs - Manual http://jp2.php.net/fputs # 以下は余計なことを申し上げますが # 要点のよくわからないような省略をなされるよりは、くどくなっても構わないので、結果的に何が # なさりたいのか、あなたが想定なさってる動作と手順も含めてお書きになられるほうが解決に # 繋がると思われますが? できればそうなされてはいかがでしょうか?

oku4649
質問者

補足

ありがとう御座います。 質問をもう少し具体的にしてみます!

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

やりたいことは何となくわかるのですが、何がどう上手く出来ないのでしょう。 $fp = fopen("./a.inc", "w"); fwrite($fp, "<?php echo 'OK';?>"); fclose($fp); require_once("./a.inc"); unlink("./a.inc"); こんな感じで使いたいということでしょうか? 上手く行かない動作を説明されると回答しやすいんじゃないかなと思います。

oku4649
質問者

お礼

ありがとう御座います。 動作に関してですが fputs($fp, "<?php include(\"http://www.goo.ne.jp/test.inc\"); ?>"); 上記部分が、表示されていない状況です。 fputs($fp, "<?php print \"テスト\"; ?>"); こちらでしたら、「テスト」という文字は出力されます…。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • fputsで改行できない

    $construction='aaa'; $explanation='bbb'; define(DATA, './data'); $fp = fopen(DATA . '/' . $name, 'w') or die('ファイルを開けません'); flock($fp, LOCK_EX); fputs($fp, $construction . "\\r\\n" . $explanation) or die ('ファイルに書き込めません'); fclose($fp); 作成されたファイルを開いてみると aaa\r\nbbbと表示され、改行されません。 "\\r\\n"ではなく"\\n"のみにしても同様です。 二十引用符にしているのに、改行されません。 fputsに複数の変数を同時に入れ、それぞれの間に改行をいれるにはどうすればよいでしょうか? 文字コードはShift-JISです。 ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • includeで読み込んだ内容を変数にいれたい

    includeで読み込んだファイル内容を変数に格納する方法はありますか? 動的ページをHTMLファイルで出力したいと思っています。 例: if(!file_exists("$file")){ mkdir("$file",0755); } $fp = fopen("$file/index.html","w") flock($fp, LOCK_EX); $hoge = include("./hoge.php"); fputs($fp,'<html>'."\n"); fputs($fp,'$hoge'."\n"); fputs($fp,'</html>'."\n"); この様に、$hogeの中に読み込んだファイルを書き込みたいのですが、 うまくできません。 この様な方法で変数にいれるのは可能でしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • fputs:ファイル操作

    Cを勉強している初心者です。 このソースはコンパイルは通るのですが、 エラーがでてしまいます。 いろいろと調べてみたりもしたのですが わかりませんでした。 なぜなのでしょうか? #include <stdio.h> #include <string.h> struct student{ char name[20]; }; int main(void) { struct student s[1]; int i; int j = 1; FILE *fp; strcpy(s[0].name,"taro"); strcpy(s[1].name,"jiro"); if((fp = fopen("test.txt","w+")) == NULL) { printf("ファイルを開けませんでした\n"); return (-1); } for(i=0;i<=j;i++) { fputs(s[i].name,fp); } fclose(fp); return (0); }

  • php fputs について

    こんにちは、趣味でプログラミングをしている者です。 さっそくですが質問させていただきます。 php で何かを作ったことはないのですが すこし勉強してみようと思い、 インターネットでphpの記事を見たりしていたところ、 次のような例文を見つけました。 <?php $http_response = ''; $fp = fsockopen('www.php.net', 80); fputs($fp, "GET / HTTP/1.1\r\n"); fputs($fp, "Host: www.php.net\r\n\r\n"); while (!feof($fp)) { $http_response .= fgets($fp, 128); } fclose($fp); echo nl2br(htmlentities($http_response)); ?> この例文の処理はなんとなくわかるのですが、 上記の例文で、fputs について調べようと思い以下のサイトの 記事を見ました http://www.php.net/manual/ja/function.fputs.php そこには次のように書かれていました。 fputs fwrite() のエイリアス そこで質問させていただきたいのですが、 エイリアスとはどのようなものなのでしょうか? windows のエクスプローラでいえばショートカットのような ものでしょうか? 例文で fwrite を使ってもよいのでしょうか? ご存知のかた、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • fputsについて2つ疑問です

    初心者でございます。 $fp =fopen(file, "r+"); $text="<ahref=\"http://www.yahoo.co.jp">ヤフー</a> "; fputs($fp,"$text"); flock($fp, LOCK_UN); fclose($fp); 上記のようにfileへヤフーリンクの書き込みを行いたいのですが、 ・わたしが疑問な部分2つ 「//」 のコメント文字を機能させなくするにはどうすればいいのでしょうか。 <ahref=\"http://www.yahoo.co.jp">ヤフー</a>のようなhtmlタグを書き込みをすることができるのでようか。 お願いいたします。

    • ベストアンサー
    • PHP
  • ファイルへの書き込み

    フォームに入力されたデータをCSVファイルに書き込みたいのですが、以下のようにすると追加で書き込みはできるのですが、ずっと改行されずに1行に書き込まれてしまうので、新しいデータを入れる際に改行されるようにしたいのですが、どのようにすればいいでしょうか? $fp = fopen(TEST_FILE,"a") or die("ファイルを開けません\n"); flock($fp, LOCK_EX); fputs($fp, "aaa")."\n"; flock($fp, LOCK_UN); fclose($fp);

    • ベストアンサー
    • PHP
  • 追加書き込みと改行コードについて

     お世話になっております。  PHPの初心者です。  PHPの追加書き込みの件で質問です。テキストファイルにテキストを追加書き込みしようと思い、以下のように書きました。 $fp = fopen('data.txt', 'a'); flock($fp, LOCK_EX); $return = fputs($fp, "$namen"); flock($fp, LOCK_UN); fclose($fp);  これでファイルに追加で書き込みはできるのですが、文末に直接つながってしまい改行されないですよね?一度書き込まれるごとに改行したいのですが、改行コードが\nでは追加で書き込みができなくなってしまいました。$returnの値がゼロになってしまいファイルに何も書き込まれなくなってしまいました。 $return = fputs($fp, "$namen\n"); ←この部分に\nを書き足しました。  文字コードはUTF-8で書き、改行コードはLFで統一しています。  PHPの改行コードについてわかる方がいましたらおしえてください。  

    • 締切済み
    • PHP
  • fseekの使い方

    C言語で、 #include "stdafx.h" #include <stdio.h> void main(void) { FILE *fp; fp = fopen("text.txt", "a+"); fseek(fp, 0L, SEEK_SET); fputs("0\n12345",fp); fseek(fp, 0L, SEEK_SET); fputs("6\n789",fp); fclose(fp); } と書き、text.txtに abcde と書いてあるとします。 私の目論見では、a+で開いている為ファイルの最後から書き始めるとしても、 fseekで最初に戻るので、実行すればtext.txtの中身は 6 78945 になると考えていたのですが、 結果は abcde0 123456 789 となりました。 fseekをいじって-3Lとかにしてみたのですが、fseekによって書き込む位置が動いている様子がありません。 fseekの使い方が間違っているのでしょうか? ちなみに環境はWindowsXPで、Visual C++ 2008で行っています。

  • fputs()はfwrite()のエイリアスとは?

    『fputs()はfwrite()のエイリアス』とは何ですか? http://www.phppro.jp/phpmanual/php/function.fputs.html fwrite()はfopen()を使用してファイルを開き、引数に指定した文字列をそのファイルに書き込むための関数。 エイリアスとは、http://e-words.jp/w/E382A8E382A4E383AAE382A2E382B9.htmlによるとファイルなどの実体を別の名前で参照するためのシンボルといった意味で使われることが多い。 つまり、基本的には1つのファイルは1つの名前しか付けられないのに対して、エイリアスは複数名前を付けられる?『test.php』というAファイルがある場合、Aファイルにエイリアスとして『eiriasu.php』と設定すれば、そのAファイルを『test.php』とも『eiriasu.php』とも呼べるようになるということでしょうか? 書きこんでいて気が付いたのですが、fputs()とはfwrite()の呼び方を変えただけで中身はまったく同じということでしょうか。

    • ベストアンサー
    • PHP
  • fputsでの書込み→最初に書いたレコードが消える

    data.txtと言うファイルに 1レコード50バイトのテキストを書込みたいのです 次のようなコマンドを使って; fseek($fp,$pos ); fputs($fp, $eeData."\n"); $posには1,51,101・・・が入ります 直前に書いたデータは書き込まれていますが その前に書いたデータが消えてしまいます fseekの使い方がいけないのでしょうか よろしくお願いします

    • ベストアンサー
    • PHP