dポイントプレゼントキャンペーン実施中!

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を入れろ と書いてありましたがどういうことでしょうか。

まだ最近 勉強し初めでわかりませんのでよろしくお願いします。

A 回答 (5件)

> 以上のエラーが出ます


> どうしてでしょうか?

もしここに投稿するときにミスしたのでなければ、

$text = fopen("test.txt","rb");
fpassthru($test);

fopen の戻り値を受け取った変数と、fpassthruに渡している変数の名前が違っているからでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/09 18:50

#3の回答で解決してます?



> 正しく $text =fopen("test.txt","b""r");でやると

"b""r" と並べても、それはひとつの文字列とはみなされません。
そしてこれら二つの間に何の演算子もないので、エラーになっているというわけです。

"rb" か "br" という形でまとめてやれば、「読み込みモードかつバイナリモード」
でオープンするはずです。
今回はオープンしようとしている対象の拡張子が '.txt'なので、
バイナリモードにする必要は多分ありません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました
みなさんの言うとおり
<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

以上のエラーが出ます
どうしてでしょうか?

お礼日時:2007/05/08 18:12

こういうことかな


$text = fopen("test.txt","rb");
fpassthru($test);

↓参考:fpassthru

参考URL:http://jp.php.net/manual/ja/function.fpassthru.php
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/07 21:54

> $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

この回答への補足

失礼しました
コードの書き換えで失敗していて
もとのコードが
$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

になります。

補足日時:2007/05/07 21:49
    • good
    • 0

> windows環境では モードにbを入れろ 



これは聞いたことがありませんね。改行コード関係かな?

> fopen関数を使ってファイルをロードしようとしたところ

エラーは fpassthru でおきていて、fopenではないようですけど。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/07 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!