スレッド表示 | フラット表示〕 全トピック 920 件中 902 番目 次≫ ≪前

.datファイルを読み込めない?

created: 2003-02-27 22:24 | modified: 2003-03-01 11:39 | reply: 4

[151] .datファイルを読み込めない?

user: p_decky | created: 2003-02-27 22:24
外部変数の件、どうもありがとうございました。
一歩前進しましたがまたつまづいてしまいました。

アクセスカウンタをPHPで作る際にカウントを保存しておく.datファイルがいるとのことだったで
用意してプログラムを起動したのですが
「Internal Server Error」
になってしまいました。

.datファイルは空のテキストファイルの拡張子を「.dat」に変えただけなのですが、これだけであってますか?

それとも外部ファイルを読み込むから変数の時のようにまた別の記述が必要とか…
reply: 153 返信 編集 削除

[153] 考えにくい

user: ゆうじ ホームページ | created: 2003-02-28 03:09
p_deckyさん、まいどです。

> datファイルは空のテキストファイルの拡張子を「.dat」に変えただけなのですが、これだけであってますか?
あってますよ。空のデータファイルを作る時によくやります。

>それとも外部ファイルを読み込むから変数の時のようにまた別の記述が必要とか…
これは外部変数のようなことはないと思います。
目にしたことありません。

考えられることは、
1.タイムアウト
2.パミッションの設定
3.パスの記述ミス

ですが、OSはWindowsでしたよね。
1と2は考えにくいところです
念のためソースを挙げていただけると
わかるかもしれません。
Parent: 151  reply: 155 返信 編集 削除

[155] ソース抜粋

user: p_decky | created: 2003-03-01 00:26
ソースを全部載せるわけにもいかないので一部抜粋します。

----------------------------
<?php
$count_file ="count.dat"; ←この.datファイルにアクセスできない???
$fwrit_err = is_writeable($count_file);
.
.
.
----------------------------
…と言うような感じでファイルの読み書きの可否やファイルそのものの有無を判断しながら
動かしてるようです。

試しに
$count_file = "";
とファイル名を書かずに動かしたところ「そんなファイルねーよ」と返されたのでスクリプト自体はちゃんと働いてるようです。。。

もし「ソースがこれだけじゃ判断できん」という場合は別途メールで送信します。

>3.パスの記述ミス
PHP(もしくはApache)でパスを通すところなんてありましたっけ?
.dllをどっかにコピーしろ、みたいなことは本に書いてあった気がするのですが…


もしかしたら単なるミスタイプのせいかも
しれないのでもう一度確認してみますが、
もしなにか分かることがありましたらお返事ください。
お手数かけます。
Parent: 153  reply: 156 返信 編集 削除

[156] あああ、ごめんなさいぃぃ。

user: p_decky | created: 2003-03-01 01:05
確認したらミスタイプでしたぁ。ごめんなさい?。

.datファイルを読み込んだときにflock($○○,1)でロックしたのをflock($○○,3)で解除してませんでした。
(スクリプトをみたら",3"が抜けてました…)

ごめんなさいついでに聞いちゃいますが、
これがエラーになるのはロックが解けてないから新たに書き込む(=カウントを1増やす)ことが
できないよ、って解釈であってるんでしょうか?

原因があまりに初歩的すぎて情けなさすぎ。
今後とも長い目でお付き合いください、、、反省。
Parent: 155  reply: 157 返信 編集 削除

[157] 勉強になりました。

user: ゆうじ | created: 2003-03-01 11:39
flock()の記述ミスで、
Internal Server Error が出るんですね。
記述ミスならば、
先にPHPのエラーメッセージがでそうなものですが、
私も始めての体験で、たいへん勉強になりました。

PHPマニュアルの、flock を確認してみたところ、
http://www.php.net/manual/ja/function.flock.php
「flock() はプロセスレベルで実装されています」
という説明がありましたので、

> これがエラーになるのはロックが解けてないから新たに書き込む(=カウントを1増やす)ことが
> できないよ、って解釈であってるんでしょうか?

というよりは、
flock関数が、OSに発行した命令が不正だったので、
エラーになったということでしょうね。

ということは、
flock関数は引数をチェックすることなく、
動作しているってことになるのかな。
このあたりは、flock関数のソースを確かめないとわかりませんね。

なんにしろ、原因がはっきりしてよかったです。
Parent: 156  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 902 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑