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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

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

PHP

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

Q&A

解決済

2回答

1192閲覧

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

RhymeLight

総合スコア12

Linux

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

PHP

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

0グッド

0クリップ

投稿2017/04/07 01:53

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

旧サイトに同じ物を使用しておりますが、そちらでは特に問題なく稼働しております。
旧サイト
###発生している問題・エラーメッセージ
一部省略させて頂きます。

PHP

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<!--google Adsense> 5<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 6<script> 7 (adsbygoogle = window.adsbygoogle || []).push({ 8 google_ad_client: "ca-pub-1354049850718392", 9 enable_page_level_ads: true 10 }); 11</script> 12<!--[if lt IE 9]> 13<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> 14<script src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> 15<![endif]--> 16 17<script type="text/javascript"> 18 <!-- 19 (function(){ 20 var _UA = navigator.userAgent; 21 if (_UA.indexOf('iPhone') > -1 || _UA.indexOf('iPad') > -1 || _UA.indexOf('iPod') > -1 || _UA.indexOf('Android') > -1) { 22 document.write('<link rel="stylesheet" href="http://ankachan.info/sp.css">'); 23 document.write('<meta name="viewport"content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no">'); 24 document.write('<meta name="format-detection" content="telephone=no">'); 25 }else{ 26 document.write('<link rel="stylesheet" type="text/css" href="pc.css">'); 27 } 28 })(); 29 //--> 30</script> 31 32<script> 33 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 34 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 35 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 36 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 37 ga('create', 'UA-89739513-1', 'auto'); 38 ga('send', 'pageview'); 39</script> 40 41<link rel="stylesheet" href="utbs.css" type="text/css"> 42<meta name="theme-color" content="#1C1C1C"> 43<meta http-equiv="Pragma" content="no-cache"> 44<meta http-equiv="Cache-Control" content="no-cache"> 45<meta http-equiv="Content-Language" content="ja"> 46<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 47<meta http-equiv="Content-Style-Type" content="text/css"> 48<meta http-equiv="Content-Script-Type" content="text/javascript"> 49<meta name="robots" content="index,follow"> 50<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0, user-scalable=yes"> 51<meta name="apple-mobile-web-app-capable" content="no"> 52<meta name="format-detection" content="telephone=no"> 53<title>Under The Blue Sky</title> 54</head> 55 56 57<body style="margin:0px;padding:0px;" link="#cc0000" vlink="#cc0000"> 58<center><h1>Under The Blue Sky</h1></center> 59<div class="contents-image"><topimg><center><img src="top.jpg" alt="TOP"></center></topimg></div> 60<div align="center"> 61 62 63 64<? 65// ログファイル 66$logfile = './all.dat'; 67// ロックファイル 68$lockfile = './data.lock'; 69// タイムゾーンを日本に 70date_default_timezone_set( 'Asia/Tokyo' ); 71// 今日の日付 72$now_date = date( 'Ymd' ); 73// 昨日の日付 74$yes_date = date( 'Ymd', strtotime( '-1 day' ) ); 75 76////////////////////////////////// 77// 78// カウント処理開始 79// 80////////////////////////////////// 81 82// ロック開始 83$lock_fp = fopen( $lockfile, 'w' ); 84flock( $lock_fp, LOCK_EX ); 85 86// ログを読み取り 87$data = file( $logfile ); 88// 変数に入れる 89// $key=日付 $yes=昨日のカウント $tod=今日のカウント $all=合計のカウント 90list( $key, $yes, $tod, $all ) = explode( '|', $data[0] ); 91 92if ( $key == $now_date ) { // 日付が変わってなければ 93 // 今日のカウントアップ 94 $tod++; 95} else { // 日付が変わってたら 96 // 今日のカウントを昨日のカウントに代入 97 $yes = $tod; 98 // 但し日付が昨日と一致しなかったら昨日のアクセスは0とみなして0を代入 99 if ( $key != $yes_date ) { 100 $yes = 0; 101 } 102 // 今日のカウントを1に 103 $tod = 1; 104} 105 106// 合計のカウントアップ 107$all++; 108$new = implode( '|', array( $now_date, $yes, $tod, $all ) ); 109 110// ログを書き込み 111$fp = fopen( $logfile, 'w' ); 112fwrite( $fp, $new ); 113fclose( $fp ); 114 115// ロック解除 116fclose( $lock_fp );![イメージ説明](6d3d31a0ecd010e994197604f3e6b24b.jpeg) 117 118// カウント整形 119$yesterday = sprintf( '%03d', $yes ); 120$today = sprintf( '%03d', $tod ); 121$total = sprintf( '%04d', $all ); 122?> 123A:<br> 124T: Y:<br> 125 126~省略~ 127 128</body> 129</html>

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

###該当のソースコード

PHP

1<? 2// ログファイル 3$logfile = './all.dat'; 4// ロックファイル 5$lockfile = './data.lock'; 6// タイムゾーンを日本に 7date_default_timezone_set( 'Asia/Tokyo' ); 8// 今日の日付 9$now_date = date( 'Ymd' ); 10// 昨日の日付 11$yes_date = date( 'Ymd', strtotime( '-1 day' ) ); 12 13////////////////////////////////// 14// 15// カウント処理開始 16// 17////////////////////////////////// 18 19// ロック開始 20$lock_fp = fopen( $lockfile, 'w' ); 21flock( $lock_fp, LOCK_EX ); 22 23// ログを読み取り 24$data = file( $logfile ); 25// 変数に入れる 26// $key=日付 $yes=昨日のカウント $tod=今日のカウント $all=合計のカウント 27list( $key, $yes, $tod, $all ) = explode( '|', $data[0] ); 28 29if ( $key == $now_date ) { // 日付が変わってなければ 30 // 今日のカウントアップ 31 $tod++; 32} else { // 日付が変わってたら 33 // 今日のカウントを昨日のカウントに代入 34 $yes = $tod; 35 // 但し日付が昨日と一致しなかったら昨日のアクセスは0とみなして0を代入 36 if ( $key != $yes_date ) { 37 $yes = 0; 38 } 39 // 今日のカウントを1に 40 $tod = 1; 41} 42 43// 合計のカウントアップ 44$all++; 45$new = implode( '|', array( $now_date, $yes, $tod, $all ) ); 46 47// ログを書き込み 48$fp = fopen( $logfile, 'w' ); 49fwrite( $fp, $new ); 50fclose( $fp ); 51 52// ロック解除 53fclose( $lock_fp ); 54 55// カウント整形 56$yesterday = sprintf( '%03d', $yes ); 57$today = sprintf( '%03d', $tod ); 58$total = sprintf( '%04d', $all ); 59?>

###補足情報(言語/FW/ツール等のバージョンなど)
■新サイト
さくらインターネット様 さくらのVPS(v4) SSD 2G TK02
OS:CentOS7
Linux Apache PHP MySQL 構築済

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

PHP

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

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

投稿2017/04/07 02:05

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RhymeLight

2017/04/07 02:11 編集

大変申し訳ございません、上記のソースはサイトを確認した際に表示されてあるものから取っております。 カウント出力は下記のように行っております。 A:<?php echo $total;?><br> T:<?php echo $today;?> Y:<?php echo $yesterday;?><br>
ttyp03

2017/04/07 02:16

あ、質問の意味わかりました。 <? を <?php にしてみてください。
RhymeLight

2017/04/07 02:33

<?php に変更した所、問題なく稼働することが確認できました。 ttyp03様、ご教授ありがとうございました。 また、TakahiroKikuchi様もご回答して頂きありがとうございました。
guest

0

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

  1. phpinfo()で、Apache上での動作確認はできていますか?

PHPの設定内容を確認 - phpinfo()

  1. apacheのログに、phpのエラーは出ていませんか?

/var/log/httpd/error_log

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

投稿2017/04/07 02:13

tak.kick

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RhymeLight

2017/04/07 02:30

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問