- ベストアンサー
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を入れろ と書いてありましたがどういうことでしょうか。 まだ最近 勉強し初めでわかりませんのでよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 以上のエラーが出ます > どうしてでしょうか? もしここに投稿するときにミスしたのでなければ、 $text = fopen("test.txt","rb"); fpassthru($test); fopen の戻り値を受け取った変数と、fpassthruに渡している変数の名前が違っているからでしょう。
その他の回答 (4)
- sakusaker7
- ベストアンサー率62% (800/1280)
#3の回答で解決してます? > 正しく $text =fopen("test.txt","b""r");でやると "b""r" と並べても、それはひとつの文字列とはみなされません。 そしてこれら二つの間に何の演算子もないので、エラーになっているというわけです。 "rb" か "br" という形でまとめてやれば、「読み込みモードかつバイナリモード」 でオープンするはずです。 今回はオープンしようとしている対象の拡張子が '.txt'なので、 バイナリモードにする必要は多分ありません。
お礼
ご回答ありがとうございました みなさんの言うとおり <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)
こういうことかな $text = fopen("test.txt","rb"); fpassthru($test); ↓参考:fpassthru
お礼
早速参考URLを見ました ご意見どうもありがとうございました
- sakusaker7
- ベストアンサー率62% (800/1280)
> $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 になります。
- Tasuke22
- ベストアンサー率33% (1799/5383)
> windows環境では モードにbを入れろ これは聞いたことがありませんね。改行コード関係かな? > fopen関数を使ってファイルをロードしようとしたところ エラーは fpassthru でおきていて、fopenではないようですけど。
お礼
そうですか それでもなぜエラーが起きているかわかりません ありがとうございました
お礼
ありがとうございました!! ついに成功しました。初歩的なミスで本当に申し訳ありません。 これからもたびたびお聞きしますがよろしくお願いします。