質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • PHP

    20288questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Linux

    3761questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

カウンターの設置について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 272

RhymeLight

score 6

前提・実現したいこと

VPSサーバーを使用したサイトを作成中で、TOPページにPHPのカウンターを設置しようとしているのですが、
正常に稼働しない為ご質問させて頂きます。
下記サイトにて設置済ですが、ソースを確認した所、
PHPがそのまま代入されており、正常にカウントがされていない状態です。
新サイト

旧サイトに同じ物を使用しておりますが、そちらでは特に問題なく稼働しております。
旧サイト

発生している問題・エラーメッセージ

一部省略させて頂きます。

<!DOCTYPE html>
<html lang="ja">
<head>
<!--google Adsense>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-1354049850718392",
    enable_page_level_ads: true
  });
</script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

<script type="text/javascript">
  <!--
    (function(){
      var _UA = navigator.userAgent;
      if (_UA.indexOf('iPhone') > -1 || _UA.indexOf('iPad') > -1 || _UA.indexOf('iPod') > -1 || _UA.indexOf('Android') > -1) {
        document.write('<link rel="stylesheet" href="http://ankachan.info/sp.css">');
        document.write('<meta name="viewport"content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no">');
        document.write('<meta name="format-detection" content="telephone=no">');
      }else{
        document.write('<link rel="stylesheet" type="text/css" href="pc.css">');
      }
    })();
  //-->
</script>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-89739513-1', 'auto');
  ga('send', 'pageview');
</script>

<link rel="stylesheet" href="utbs.css" type="text/css">
<meta name="theme-color" content="#1C1C1C">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="robots" content="index,follow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes">
<meta name="apple-mobile-web-app-capable" content="no">
<meta name="format-detection" content="telephone=no">
<title>Under The Blue Sky</title>
</head>


<body style="margin:0px;padding:0px;" link="#cc0000" vlink="#cc0000">
<center><h1>Under The Blue Sky</h1></center>
<div class="contents-image"><topimg><center><img src="top.jpg" alt="TOP"></center></topimg></div>
<div align="center">



<?
// ログファイル
$logfile = './all.dat';
// ロックファイル
$lockfile = './data.lock';
// タイムゾーンを日本に
date_default_timezone_set( 'Asia/Tokyo' );
// 今日の日付
$now_date = date( 'Ymd' );
// 昨日の日付
$yes_date = date( 'Ymd', strtotime( '-1 day' ) );

//////////////////////////////////
//
// カウント処理開始
//
//////////////////////////////////

// ロック開始
$lock_fp = fopen( $lockfile, 'w' );
flock( $lock_fp, LOCK_EX );

// ログを読み取り
$data = file( $logfile );
// 変数に入れる
// $key=日付 $yes=昨日のカウント $tod=今日のカウント $all=合計のカウント
list( $key, $yes, $tod, $all ) = explode( '|', $data[0] );

if ( $key == $now_date ) { // 日付が変わってなければ
    // 今日のカウントアップ
    $tod++;
} else { // 日付が変わってたら
    // 今日のカウントを昨日のカウントに代入
    $yes = $tod;
    // 但し日付が昨日と一致しなかったら昨日のアクセスは0とみなして0を代入
    if ( $key != $yes_date ) {
        $yes = 0;
    }
    // 今日のカウントを1$tod = 1;
}

// 合計のカウントアップ
$all++;
$new = implode( '|', array( $now_date, $yes, $tod, $all ) );

// ログを書き込み
$fp = fopen( $logfile, 'w' );
fwrite( $fp, $new );
fclose( $fp );

// ロック解除
fclose( $lock_fp );![イメージ説明](6d3d31a0ecd010e994197604f3e6b24b.jpeg)

// カウント整形
$yesterday = sprintf( '%03d', $yes );
$today = sprintf( '%03d', $tod );
$total = sprintf( '%04d', $all );
?>
A:<br>
T: Y:<br>

~省略~

</body>
</html>

旧サイトには下記のように設置ができており、新サイトでは表示されておりません。
イメージ

該当のソースコード

<?
// ログファイル
$logfile = './all.dat';
// ロックファイル
$lockfile = './data.lock';
// タイムゾーンを日本に
date_default_timezone_set( 'Asia/Tokyo' );
// 今日の日付
$now_date = date( 'Ymd' );
// 昨日の日付
$yes_date = date( 'Ymd', strtotime( '-1 day' ) );

//////////////////////////////////
//
// カウント処理開始
//
//////////////////////////////////

// ロック開始
$lock_fp = fopen( $lockfile, 'w' );
flock( $lock_fp, LOCK_EX );

// ログを読み取り
$data = file( $logfile );
// 変数に入れる
// $key=日付 $yes=昨日のカウント $tod=今日のカウント $all=合計のカウント
list( $key, $yes, $tod, $all ) = explode( '|', $data[0] );

if ( $key == $now_date ) { // 日付が変わってなければ
    // 今日のカウントアップ
    $tod++;
} else { // 日付が変わってたら
    // 今日のカウントを昨日のカウントに代入
    $yes = $tod;
    // 但し日付が昨日と一致しなかったら昨日のアクセスは0とみなして0を代入
    if ( $key != $yes_date ) {
        $yes = 0;
    }
    // 今日のカウントを1に
    $tod = 1;
}

// 合計のカウントアップ
$all++;
$new = implode( '|', array( $now_date, $yes, $tod, $all ) );

// ログを書き込み
$fp = fopen( $logfile, 'w' );
fwrite( $fp, $new );
fclose( $fp );

// ロック解除
fclose( $lock_fp );

// カウント整形
$yesterday = sprintf( '%03d', $yes );
$today = sprintf( '%03d', $tod );
$total = sprintf( '%04d', $all );
?>

補足情報(言語/FW/ツール等のバージョンなど)

■新サイト
さくらインターネット様 さくらのVPS(v4) SSD 2G TK02
OS:CentOS7
Linux Apache PHP MySQL 構築済

■旧サイト
さくらインターネット様 さくらのレンタルサーバ スタンダード

以上となります。よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

$yesterdayも$todayも$totalもどこにも出力していないからではないでしょうか。
こうしたらいいのでは。

// カウント整形
$yesterday = sprintf( '%03d', $yes );
$today = sprintf( '%03d', $tod );
$total = sprintf( '%04d', $all );
?>
A:<?=$yesterday?><br>
T:<?=$today?> Y:<?=$total?><br>


旧の方はどうやって出力してるんでしょう???

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/07 11:10 編集

    大変申し訳ございません、上記のソースはサイトを確認した際に表示されてあるものから取っております。
    カウント出力は下記のように行っております。

    A:<?php echo $total;?><br>
    T:<?php echo $today;?> Y:<?php echo $yesterday;?><br>

    キャンセル

  • 2017/04/07 11:16

    あ、質問の意味わかりました。
    <?

    <?php
    にしてみてください。

    キャンセル

  • 2017/04/07 11:18

    参考
    http://php.net/manual/ja/language.basic-syntax.phptags.php

    キャンセル

  • 2017/04/07 11:33


    <?php
    に変更した所、問題なく稼働することが確認できました。

    ttyp03様、ご教授ありがとうございました。
    また、TakahiroKikuchi様もご回答して頂きありがとうございました。

    キャンセル

+2

動いているコードを移植されているようなので、環境の検証をしてみてください。
ログファイルの添付がないので、一般論的にですが。。。

  1. phpinfo()で、Apache上での動作確認はできていますか?
    PHPの設定内容を確認 - phpinfo()

  2. apacheのログに、phpのエラーは出ていませんか?
    /var/log/httpd/error_log

  3. 環境設定の不備(apacheのmod_php、php.iniなど)がないか確認してみましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/07 11:29

    1.phpinfoにて確認を行いました。
    http://utbs.info/phpinfo.php
    2.apacheのログにエラーが記述されておりました。
    https://i.gyazo.com/75c1e6b89b0a620ba7888fd76a1b11ac.png
    3. 1をご確認下さい。

    キャンセル

  • 2017/04/07 11:30

    2に関してですが、カウンターの箇所でエラーが発生しております。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20288questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Linux

    3761questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。