自前の「いいね!」ボタンのようなものを作りたくコードを組んでいます。
しかし、1つのphpファイルがうまく動作しておらず確認すると、500というステータスを返していました。
調べて見たところ、htaccessの間違い、パーミッションの設定ミス、コードのミスなどが原因としてあげられていましたが、ほかのphpファイルは動いているし、コードのミスも分からないので、どなたかご教授お願いします。
ソースコードはこちらです
<?php
//////ajaxデータを受信1
$file_id = $_POST["file_id"]; //ファイル名
$count = $_POST["count"]; //投票数
$cookieName = "vote_" . $file_id; //クッキー名。
$cookieTime = time() + 10; //クッキーの有効期限(投票を制限する秒数)
///////クッキーが有効
if(isset($_COOKIE[$cookieName])){
echo "クッキー制御により投票不可です。";
}else{
///////クッキーが無効=カウントアップ
$count = $_POST["count"]; //投票数
//カウント数を書き出すファイル名
$fileName = "log/" . $file_id . ".count";
$fp = @fopen($fileName , "w"); //書き込みモードで開く
flock($fp , LOCK_EX); //排他的ロック(書く準備) 他のロックをすべてブロック
fputs($fp , $count); //カウント数を書き込み
flock($fp , LOCK_UN); //ロック開放
fclose($fp);
setcookie($cookieName , $count , $cookieTime); //10秒有効のクッキーをセット
echo "Complete"; //clickCount.jsにはここの値を返す
};
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
<?php
// とりあえずこの2行は開発時に絶対書くこと
ini_set('display_errors', true);
error_reporting(E_ALL);
//////ajaxデータを受信1
$file_id = $_POST["file_id"]; //ファイル名
$count = $_POST["count"]; //投票数
$cookieName = "vote_" . $file_id; //クッキー名。
$cookieTime = time() + 10; //クッキーの有効期限(投票を制限する秒数)
上のように、最初の2行は絶対に書いておく。
こうすれば、エラーメッセージがブラウザに表示されるので、エラーメッセージをよく読み、エラーの原因を探ってください。
ini_set('display_errors', true);
error_reporting(E_ALL);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
m6u
2018/08/15 15:39 編集
error_logに出てるエラーメッセージはどうなってますか? @fopen() にしている理由はなんですか。
esaku
2018/08/15 15:51
エラーメッセージはこれですか? jquery.min.js:2 POST https://goyonin.com/wp-content/themes/lionmedia-child/vote.php 500 () send @ jquery.min.js:2 ajax @ jquery.min.js:2 (anonymous) @ autoptimize_0e495ba7…36d0464643e84.js:71 dispatch @ jquery.min.js:2 y.handle @ jquery.min.js:2 @fopenに関してはコピペで持ってきているので特に理由はありません
m6u
2018/08/15 16:12
apache httpdならば、例えば /var/log/httpd/error_log にリアルタイムに記録されますので、コンソールにて tail /var/log/httpd/error_log なんてコマンドを叩くと最新のエラーログが見えたりします。
m.ts10806
2018/08/15 18:32
プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)