サーバでの動作について

このQ&Aのポイント
  • サーバの移転によりサイトが正常に表示されない問題が発生しました。
  • 移転前のサーバでは正常に動作していたが、移転先のサーバではカウンターなどのPHP機能が機能しないようです。
  • 移転後のサーバはロリポップサーバで、有料サーバでありながらCGIがサポート対象外であるため、解決方法がわかりません。
回答を見る
  • ベストアンサー

サーバでの動作について

私は現在サイトを開設しています。PHPについては初心者です。 最近無料でレンタルしていたサーバがサービス提供を止めてしまったので、サーバを移転しました。移転前のサーバでは普通に動いていましたが、移転先のサーバでは上手く表示されず行き詰ってます。 サイトの中でカウンター、アンケート、問い合わせ、掲示板にPHPを使用しています。 カウンターはTOPページの下部に挿入しているのですが、HTMLファイルにPHPを埋め込んでます。 拡張子はhtmlにして.htaccessファイルに下記1行を記述して使用しています。 AddType application/x-httpd-php html TOPページに記述してあるPHPのコードは、 <?php $filename = "./count.txt"; // カウントを記憶するファイル $keta = 5; //カウンタ表示桁数 $file = fopen($filename,"r+"); $buffer = fread($file,filesize ($filename)); list($count,$ip) = explode("<>",$buffer); $myip = getenv("REMOTE_ADDR"); if($myip != $ip){ $count++; } $count = sprintf("%0".$keta."d",$count); echo "Total: $count"; ftruncate($file,0); rewind($file); flock($file,LOCK_EX); fwrite($file, $count."<>".$myip); flock($file,LOCK_UN); fclose($file); ?> 現在はこのコードがそのままTOPページに表示されています。 カウントを記録するファイルのパーミッションは設定しました。 『ディレクトリの設定はいらない』と記述してあったのでPHPのパスの設定はしていません。 移転後のサーバはロリポップサーバです。 有料サーバでサポートもしているようですが、CGIはサポート対象外という事で困っています。 解決方法をご存知の方いらっしゃいましたらご教授ください。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

ロリポップは AddType application/x-httpd-php html は効かないので以下の記載に書き換えると良いです。 AddHandler php5.2-script .html .php

KEN1159
質問者

お礼

mikemike7さん 回答ありがとうございました。 無事にカウンターが表示されました。 こんなこともあるのですね。大変勉強になりました。 本当にありがとうございました。

関連するQ&A

  • ローカルでは動くのにサーバーにアップするとエラーがでる

    最近PHPを勉強を始めました。 とりあえず、参考書の通りに作っていくことから始めています。 アクセスカウンタを設置したく、参考書の通りに記述しました。 <?php $cnt_file = "count.dat"; $cnt_len = 10000; if (file_exists($cnt_file)) { $file = fopen($cnt_file, "r+"); $count = fgets($file, $cnt_len); $count = $count + 1; } else { $file = fopen($cnt_file, "w"); $count = 1; } rewind($file); flock($file, LOCK_EX); fputs($file, $count, $cnt_len); flock($file, LOCK_UN); fclose($file); echo $count; ?> という感じです。 ローカルでは動くのですが、サーバーにアップするとエラーがでて困っています。 ローカルではXAMPPをインストールしていてPHP5なようです。 サーバーはPHP4.4らしいですが、調べても対応している命令をだしているようなのですが、何故かエラーがでています。 問題を解決したいのですが、何分初心者で行き詰まっている状況です。 わかるかたよろしくお願いします。

    • ベストアンサー
    • PHP
  • カウンター 増えないのは?

    お世話になります。 下記、サンプルを参考にちょっとカウンターのスクリプトを書いてみたのですが、どうもカウントがアップしません。 どこがおかしいのかご指摘いただけると幸いです。 <?php //カウンターファイル $cnt_file = "count.dat"; //カウンター桁数 $cnt_len = 10; //カウンターファイルが存在すればカウンター値を読取る if(file_exists($cnt_file)){ $file = fopen($cnt_file, "r+"); $conut = fgets($file, $cnt_len); $count = $count + 1; } //ファイルなし新規作成 else { $file = fopen($cnt_file, "w"); $conut = 1; } //ファイルポインタを先頭にセットする rewind($file); //ロック flock($file, LOCK_EX); //書きこみ fputs($file, $conut, $cnt_len); //ロック解除 flock($file, LOCK_UN); //閉じる fclose($file); ?>

    • ベストアンサー
    • PHP
  • カウンターを一定数でリセットしたい

    はじめまして。 レッツPHPのカウンタを使っています。 <?php $fp = fopen("count.txt","r+") or die("Error!"); $count = fgets($fp, 64); $count++; rewind($fp); //set_file_buffer($fp, 0); flock($fp, LOCK_EX); fputs($fp, $count); fclose($fp); echo $count; ?> count_file.txt にはA00と記入しているのでA99になったら次はB00~Z99までカウントされるのを、F99まできたらリセットしA00から始めたいのですが式が分りません。$count++;を書き換えればいいのだとは思いますが・・・ よろしくお願いいたします。 PHP4.3.3

    • ベストアンサー
    • PHP
  • PHP、外部ファイルにテキストを書きだす。

    こんにちは、皆様。 下記のソースを実行したいと思います。期待する結果としては、外部ファイルに行列に書き出すことです。 <?php $count_file="count.dat"; if(file_exists($count_file)){ $file = fopen("count.dat", "a") or die("file can not open"); $order_no = fgets($file) + time(); print $order_no; }else{ $file = fopen($count_file, "w") or die("file can not open"); $order_no = time(); } set_file_buffer($file,0); flock($file, LOCK_EX); fputs($file , $order_no); flock($file, LOCK_UN); fclose($file); ?> このソースの結果は配列として書き込まれてました。こんな感じです。 129835261512983526501298355377129835537912983566121298356635 このソースを実行する度にcount.datファイルに順次書き出したと思います。 1298352615 1298352650 1298355377 1298355379 1298356612 1298356635 まだまだPHP勉強中なのでわかる方教えてください。 (1)この行で$order_no = fgets($file) + time(); 改行記号をどう付ければ良いでしょうか? (2) C言語のようにポインターで指定しなければならないですか?書き方を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • a.phpにあるアクセスカウンターの数値を取得する

    質問を出すのは初めてでプログラム1年生です。 質問内容は a.phpにあるアクセスカウンターの数値をb.phpに呼び出したいのですが、可能なのでしょうか?? ちなみにb.phpではアクセスカウントを増やしたくありません。 <form>で括り$_GETで呼び出すなどしましたが、1度a.phpから飛ばないと表示されませんでした。 いろいろ類似する質問や記事を見て試行錯誤しましたが、どうしても表示されません。 どなたか教えていただけたら幸いです。 a.phpで記載している内容です。 <?php $counter_file = 'counter.txt'; $counter_lenght = 8; $fp = fopen($counter_file, 'r+'); if ($fp){ if (flock($fp, LOCK_EX)){ $counter = fgets($fp, $counter_lenght); $counter++; rewind($fp); if (fwrite($fp, $counter) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); } } fclose($fp); print('COUNT:'.$counter); ?> b.phpで記載している内容です。 <?php ob_start(); include("a.php"); ob_clean(); print $counter; ?> 私の取って付けたような知識では太刀打ちできませんでした。 どうかお助け願います。

    • ベストアンサー
    • PHP
  • phpのファイル操作について

    ファイル操作について、上手く作動しなくて困っています。 PHPは今勉強している最中で、ほとんど初心者です。 ページを開いたときに、テキストファイルに書き込む操作をしたいのですが、うまくいきません。 ローカルホストで試したときには、きちんと書き込むことができるのですが、 借りているサーバーで試すと、”ファイル書き込み失敗”と出てしまいます。 http://ribbon.to/ こちらのサーバーを借りています。 原因がわからないので、少しでもいいのでお力をいただきたいです。 よろしくお願いします。 ここからPHPです $folder = "hoge"; if (!file_exists($folder)) { mkdir($folder,0733); } $filename = "$folder/".date("m").".txt"; $fh = @fopen($filename, "a"); if ($fh == FALSE) { exit("ファイル書き込み失敗"); }else { // 排他ロック flock($fh, LOCK_EX); // メッセージ作成 $msg = date("Y/m/d H:i:s"); // 書き出し fputs($fh, $msg); // ロックを解除 flock($fh, LOCK_UN); // ファイルを閉じる fclose($fh); }

    • 締切済み
    • PHP
  • windowsサーバでファイルに書き込みできない

    こんにちわ 先日サーバの移転でアイル(windows)に移項しました。 使用していたphpスクリプトでファイルに書き込む部分がなぜか動作せず、ログファイルの保存が出来なくなってしまいました。 $log ="log.csv"; $reg_com = $_POST['name'].",".$_POST['union']; $fp = fopen($log, "a"); flock($fp, LOCK_EX); fputs($fp, "$reg_com\n"); flock($fp, LOCK_UN); fclose($fp); Linuxサーバの再は上記で問題なくファイルに書き込みされていたのですが、なぜ動作しないのでしょうか? スクリプトの動作は、postされた内容をプログラムファイルと同じ階層のlog.csvに追記していくものになります。 問題点のご指摘をお願いします。

    • 締切済み
    • PHP
  • PHPのアクセスカウンターのバグについてです!

    PHPを勉強しているものですが アクセスカウンターをネットで調べ自分なりに書いたのですが 日にちが変わるとトータル、今日、昨日が全く動かなくなります。 どこをどうすればいいのか教えていただけないでしょうか? お願いします。 $txt='counter.txt'; $fp=fopen($txt,'r+'); if($fp!==false){ if(flock($fp,LOCK_EX)){ $counter=fgets($fp);//トータル 今日 昨日 日付 $count=explode(' ',$counter); if(date('j') != $count[3]){ $count[3]=date('j'); $count[2]=$count[1]; $count[1]=0; } $count[0]++; $count[1]++; $counter=implode(' ',$count); rewind($fp); fputs($fp,$counter); flock($fp,LOCK_UN);} } fclose($fp); ちなみにバグはトータル→今日→昨日→日付の順です。 500 1 1 262625 のようになっていました。 よろしくです。

    • ベストアンサー
    • PHP
  • flockが使えない場合のスクリプトを教えて下さい

    こんにちわ。私はwindows meなのですがflockが使えないようなのでその場合はどのようなスクリプトで表現したらよいのか方法があったら教えて下さい。このflockの部分に代わるものを教えて下さい、又他の方法があればアドバイス下さい。宜しくお願いします。 open(COUNT,"+<countdata.txt") || die "File'countdata.txt'Open Error\n"; #flock(COUNT,2); $counter=<COUNT>; $counter_new=$counter+1; print"$counter_new\n"; seek(COUNT,0,0); print COUNT"$counter_new\n"; close(COUNT); #flock(COUNT,8);

    • ベストアンサー
    • Perl
  • カウンター設置うまくいかず

    http://www.tohoho-web.com/soft/wcnt.htm#Trouble このカウンター使ってますが、上手く行きません。 cgiは動きます。 cnt dat acc ががそれぞれ存在しませんというエラーが出ます。 パーミッションは間違っておらず、サーバーにもアップしてます。 ファイル名も間違ってません。 原因は何でしょう? cgiのファイルに、 $file_count = "http://www.ほにゃらら/count/$count_name" . ".cnt"; と記述してます。 本来は、$file_count = "$count_name" . ".cnt"; となっていたものを、別のサーバーにファイルを置いたため、このような記述にしてみました。 これ、間違ってますか? こういう書き方はいけないのでしょうか? アドバイス、よろしくお願いいたします。