• ベストアンサー

windows環境でphpのfopenが使用できない

rimyと申します。 windowsでapacheを使用していて、PHP5をインストールしています。 PHPは作動していて、スプリクトは実行できます。 しかしfopen関数を使ってファイルをロードしようとしたところ なぜかエラーが起きます。 fopen関数は fopen('ファイルパス','モード'); でやれるので やってみましたが、 Warning: fpassthru(): supplied argument is not a valid stream resource in C:\Apache\htdocs\test\reading.php on line 6 という表示が出ます。 ちなみにスプリクトは <html> <head><title>ファイルの読み出し</title></head> <body> <?php $text = fopen("test.txt","b""r"); fpassthru($text); ?> </body> </html> と書いてあります。 あるサイトで windows環境では モードにbを入れろ と書いてありましたがどういうことでしょうか。 まだ最近 勉強し初めでわかりませんのでよろしくお願いします。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.5

> 以上のエラーが出ます > どうしてでしょうか? もしここに投稿するときにミスしたのでなければ、 $text = fopen("test.txt","rb"); fpassthru($test); fopen の戻り値を受け取った変数と、fpassthruに渡している変数の名前が違っているからでしょう。

rimy
質問者

お礼

ありがとうございました!! ついに成功しました。初歩的なミスで本当に申し訳ありません。 これからもたびたびお聞きしますがよろしくお願いします。

その他の回答 (4)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

#3の回答で解決してます? > 正しく $text =fopen("test.txt","b""r");でやると "b""r" と並べても、それはひとつの文字列とはみなされません。 そしてこれら二つの間に何の演算子もないので、エラーになっているというわけです。 "rb" か "br" という形でまとめてやれば、「読み込みモードかつバイナリモード」 でオープンするはずです。 今回はオープンしようとしている対象の拡張子が '.txt'なので、 バイナリモードにする必要は多分ありません。

rimy
質問者

お礼

ご回答ありがとうございました みなさんの言うとおり <html> <head><title>ファイルの読み出し(1行)</title></head> <body> <?php $text = fopen("test.txt","rb"); fpassthru($test); ?> </body> </html> で実行してみると Warning: fpassthru(): supplied argument is not a valid stream resource in C:\Apache\htdocs\test\reading.php on line 6 以上のエラーが出ます どうしてでしょうか?

  • wish46
  • ベストアンサー率78% (29/37)
回答No.3

こういうことかな $text = fopen("test.txt","rb"); fpassthru($test); ↓参考:fpassthru

参考URL:
http://jp.php.net/manual/ja/function.fpassthru.php
rimy
質問者

お礼

早速参考URLを見ました ご意見どうもありがとうございました

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> $text = fopen("test.txt","b""r"); このfopenの引数ですが、本当にこれですか? Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in o.php on line 2 てなエラーになるんですが。 仮にカンマを忘れていたのなら、 resource fopen ( string $filename, string $mode [, bool $use_include_path [, resource $context]] ) にあるように、"r" は第三引数になります。 そのせいで fopenが成功していないとかじゃないですか? モードに'b'を含めるかどうかという話は 以下のリンクにある記述を参考にするとよいでしょう。 PHP: fopen - Manual http://jp.php.net/fopen

rimy
質問者

補足

失礼しました コードの書き換えで失敗していて もとのコードが $text ='fopen("test.txt","b""r")'; になっていました 正しく $text =fopen("test.txt","b""r");でやると Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Apache\htdocs\test\reading.php on line 5 になります。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

> windows環境では モードにbを入れろ  これは聞いたことがありませんね。改行コード関係かな? > fopen関数を使ってファイルをロードしようとしたところ エラーは fpassthru でおきていて、fopenではないようですけど。

rimy
質問者

お礼

そうですか それでもなぜエラーが起きているかわかりません ありがとうございました

関連するQ&A