電子書籍の厳選無料作品が豊富!

パソコンを買い替えたため新しく「apache2.2」「php5」「mysql5」を入れ直しました。

商品の購入サンプルプログラムで試運転していたところ、購入情報を記録するファイルが開けずエラーが発生してしまいました。
Warning: fopen(/tmp/count.dat) [function.fopen]: failed to open stream: No such file or directory in C:\Apache2.2\htdocs\sample1-3-1.php on line 8
ファイルをオープンできませんでした

このプログラムの8行目は
$file = fopen($count_file, "w") or die("ファイルをオープンできませんでした");
になっています。
指定されたファイルが無い場合は新規作成される筈ですが、新規作成できていません。
このフォルダが読み込み専用になってるのかと思い、コメンドプロントで「attrib -r c:\apache2.2\htdocs」を入力し、読みより専用を解除してみましたが結果は変わりません。
手動で指定のファイルを作ったところ、エラーは出ず正常に動作します。

その都度ファイルを手動で作るわけにも行かず困っています。
詳しい方がいらっしゃいましたらどうかご教授お願いします。


型番:NEC LaVie L PC-LL750CS3KS
OS:Windows7 Home Premium 64bit
AMP環境:apache2.2.17 + php5.3.5 + mysql5.1.52

A 回答 (1件)

エラーメッセージには「Warning: fopen(/tmp/count.dat)」とありますので、


\tmpフォルダにcount.datを作成しようとしたが\tmpフォルダがなかったためfopenが失敗した、
ということなんじゃないかと思うんです。

なので解決方法としては
・C:\tmpフォルダを作成する
・phpプログラムの中で /tmp/count.dat と書かれてある部分から /tmp/ を削除する(phpと同じフォルダにcount.datが作成されます)
でいいと思うんです。

手動で指定のファイルを作成したら動いたというのがどういうことかよくわからないですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!
アドバイスのおかげで無事ファイルの新規作成ができました!


原因はアドバイスを頂いた通り、「tmpフォルダの未作成」と「ファイルのパスが絶対パスになっていた」ことでした。

昔のパソコンの時は勝手にtmpフォルダが作成され、
下記のような書き方でカレントディレクトリが指定されていましたが、今のパソコンでは絶体パスになるためC:\tmpに保存されてしまっていました。
$count_file="/tmp/count.dat";
phpのバージョンの違いでしょうか

tmpフォルダを手動で作成し、
$count_file="/tmp/count.dat";を、
$count_file="tmp/count.dat";
に書き直すと無事動作しました


64bitのパソコンを使用しているために上手く動作しないのかと思っていましたが単なる記述ミスでした。
とりあえず動作したので安心です、
どうもありがとうございました。

お礼日時:2011/02/11 01:27

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