• ベストアンサー

カウンターの作り方

本を読んでPHPの勉強をしているのですが、さっそく引っかかってしまいました。 本にはcounter.logというファイルにカウンターの値を保存するようにプログラムが書かれています。 そして、windowsではこのcounter.logがスクリプト実行時に自動的に作られるとあるのですが、私はMAC OS Xなので作られず、何回アクセスしても「1人目のお客様です。」と表示されます。 試しに空のcounter.logというファイルを作っておなじディレクトリにおいてみましたが、何も変わらないし、ファイルの中もからのままです。 どうしたら良いのでしょうか?

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

書き込み用ファイルを開く処理の中で↓ if( $fn = @fopen($logfile. 'w')){ ソースコードをコピペしてるのだとしたら、 $logfileの後ろが、コンマではなく、ピリオドなのが原因ですね。 デバッグ中は、"@fopen"の"@"を外して"fopen"とする方が良いですよ。 最後には付け加えるのを忘れずに。

chibihuku
質問者

お礼

できました・・・。 お恥ずかしいです・・・ ありがとうございました!

その他の回答 (2)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

サーバー上で稼働しているなら、対象のディレクトリのパーミッションを確認・変更してみましょう。 とりあえずテストなので、777でいいでしょう。(誰でも読み書き実行可能、セキュリティ的に問題ありなのでテストだけに使用してください) 試しに自分で作成したcounter.logに適当な、かつ適切なデータを入れた場合はどうなります?(サーバー上なら、ファイルのパーミッションをとりあえず777に変更) おそらく、訪問者数を数字文字列で保存しているのでしょうが、10という数字を入力した場合など。 なんとなくファイル名やパスが間違っていたってオチもありそうな気がします、念のためにそこも確認してみてくださいね。

chibihuku
質問者

補足

counter.logに10を入力して保存したら、11人目のお客様になりました。 ちなみにXAMPPというソフトを使ってhttp://localhostというところで見てますが、これはサーバー上ではないのでしょうか? あと、パーミッションはどのように確認するのですか? 分からないことだらけですみません。 遅ればせながら、スクリプトを書いておきます。 <html> <head> <title>最初のカウンター</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php $logfile = "./counter.log"; $counter = 0; if( $fn = @fopen($logfile, 'r')){ $counter = trim(fgets($fn)); fclose($fn); } print( ++$counter . "人目のお客様です<br>"); if( $fn = @fopen($logfile. 'w')){ fwrite( $fn, $counter); fclose($fn); } ?> </body> </html> です。

  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

質問1 PHPが動作しているのはローカル(あなたのパソコン)でしょうか? それとも外部のサーバーでしょうか? 質問2 実行されているスクリプトは本に書いてるサンプルスクリプトでしょうか? それともご自分で作成されたものでしょうか?

chibihuku
質問者

補足

>質問1  PHPが動作しているのはローカル(あなたのパソコン)でしょうか?  それとも外部のサーバーでしょうか? http://localhost/とあるので、たぶんローカルです。 >質問2  実行されているスクリプトは本に書いてるサンプルスクリプトでしょうか?  それともご自分で作成されたものでしょうか? 本のサンプルスクリプトです。

関連するQ&A