PHPがCGIモードのサーバでもLast-Modifiedを取得するには?

このQ&Aのポイント
  • Webサイトを.htmlではなく、.phpで制作しています。共通部分を外部.phpファイル化して作業時間を短縮するためです。
  • しかし、自動でRSSやAtomファイルを生成するソフトを使っていると、更新日時が正しく取得できなくなっています。
  • CGIモードでもLast-Modifiedを取得するためには、他の方法を探す必要があります。
回答を見る
  • ベストアンサー

PHPがCGIモードのサーバでもLast-Modifiedを取得するに

PHPがCGIモードのサーバでもLast-Modifiedを取得するには? Webサイトを.htmlではなく、.phpで制作しています。共通部分を外部.phpファイル化して作業時間短縮や間違いを防ぐためです。 しかし、自動でrssxml等のRSSやAtomファイルを生成するソフトを使っているのですが、アップされたファイルを開くと、 更新した日が一番上にくるはずなのにそうならず、よく見ると、全てのページの更新日時が同じになってしまっています。これでは更新順にページが並ばず、まるでウソのRSSファイルになってしまいます。 上述のように、.phpファイルでつくっているサイトなので、ローカルでは更新日時がうまく取得できないので Webサーバから取得するようにツールで設定しているのですが、その場合、Last-Modifiedで更新日時を取得して いるソフトだそうで、これで取得できれば良いのですが、これができませんでした。 利用しているサーバのPHPがCGIモードなためだそうです。 もしもモジュールモードであれば、トップページの階層の.htaccessにたった一行記述するだけで 解決するらしいです。 CGIモードでもLast-Modified、つまり更新日時を取得するにはどのような方法があるでしょうか?

  • touchy
  • お礼率88% (704/796)
  • PHP
  • 回答数1
  • ありがとう数12

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

  • ベストアンサー
回答No.1

読み込まれる(取得される)PHPファイルで、header関数というHTTPヘッダを送出する関数で、Last-Modifiedを送出するしかないですね。 PHPファイルをどのような構成で作成されているのかによるのですが、 とりあえず、何らかのファイルに、コンテンツが記述されているファイル(今回は仮に「template_001.php」というファイルだと仮定します。)があったとしたら、 <?php //何かの出力(HTMLとかechoされるもの)の前に、下記を記述 $time = filemtime("template_001.php"); //サーバローカルの更新日時を取得 header("Last-Modified: ".gmdate("D, d M Y H:i:s", $time)." GMT"); ?> こうしてやれば、実際に更新を行った、コンテンツ部のファイルの更新日時のLast-Modifiedを送出できます。 書き方によっては全部のファイルにこのコードを挿入しないといけないので、結構面倒です。 参考にしたサイトを掲載します。 http://www.arielworks.net/articles/2004/0125b ここにモジュールモードだとなぜ出来るのか、というのも含めて書いてありました。

touchy
質問者

お礼

なんと説明がうまいことか。。。 > 何かの出力(HTMLとかechoされるもの)の前に、下記を記述 しかもこれが大きかったです。おかげさまで迷うことなくできました! ご案内のURLは自分も検索して見つけたのですが、結局どうすればいいのかわからず閉じてしまいました苦笑; おかげさまで解決しました!!

関連するQ&A

  • get_headersでLast-Modified

    あるURLで、get_headersを試したところ、'Last-Modified'が取得できませんでした。] ■質問 ・なぜ、'Last-Modified'を取得出来るサイトと取得できないサイトがあるのでしょうか? ■補足 ・ネットで検索したところ、 >'Last-Modified'を返してないサイトがちらほらあるみたい ▽PHPでwebページの最終更新日時を取得したいのですが・・・ - Yahoo!知恵袋   http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1363447953 と書かれていたのですが、これはどういう意味なのでしょうか? ・ファイル作成後、一度も更新していない ・'Last-Modified'を返さないよう設定している? ・それ以外?

    • ベストアンサー
    • PHP
  • モジュールモードとCGIモードとは??

    さくらのレンタルサーバーのスタンダード(3G,500円/月)だと、PHPがCGIモードでしか使えないのですが・・・。 http://www.sakura.ne.jp/function/matrix.html モジュールモードとCGIモードの違いがわかりません。 トップページの拡張子をindex.phpにして、html中に直接phpを記述して実行させる、と言う使い方をしたいのですが、そう言う場合、モジュールモードやCGIモードは意識しなければいけないでしょうか?(CGIモードでは出来ない!など・・・。) よろしくお願いします。 できれば、具体的に『こっちは、こう言うことが出来ない』など教えていただけるとありがたいです。

    • 締切済み
    • PHP
  • CGIやPHPが使える安くて容量の多いサーバー

    CGIやPHPが使える安くて容量の多いサーバー、探しています。 CGIやPHPが使える安くて容量の多いサーバー、探しています。 今YAHOOウェブホスティングを利用しています。他のサーバーへの変更を検討しています。現在のサーバーはYAHOOウェブホスティング ライトコースで2Gの容量です。当方はCGI、PHPも独自でと思い今回の移管を考えていますが、お勧めのサーバー会社があれば具体的に料金や手間などを教えてください。どうぞよろしくお願いいたします。

  • iモードとCGI

    現在iモード用のCGIを作ろうと思っています。 CGIはサーバサイド・スクリプトですので、 サーバ側の環境が整っており、CGIによって生成されるHTMLファイルがiモードの仕様に合っていれば、PerlやPHPなど、どの言語を使ってもよいということでしょうか?またそれらとデータベースを連携させても問題ないということでしょうか? iモードに関してはまったく知識がありません。 基本的なことかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • LAN内のサーバーでCGIやPHPを動かす方法教えてください。

    職場のシステムの変更によりサーバーが一台余っています。 富士通のプライマジーとかいうやつでした。 もったいないので何かに使用できればと考えています。 ちなにみファイルサーバーは既に稼動しておりますので、できればCGIやPHPなどが動くようにしてみたいんですが、 CGIやPHPという言葉も最近覚えたばかりで、書籍等にて現在独学中です。 LAN環境は存在しますが、Webには出しておりません。 各端末毎にIPは割り当ててしてあるような環境です。 Windows2000だったか2003だったかしか入っていないサーバーでCGIやPHPを動くようにしたいのですが、どうやったらいいものか? 社内で掲示板やアンケートや会議室予約や社用車の予約等をつくって運用するのが夢です。どなたか教えてください。 あわせて、CGIやPHPの初心者にお勧めの書籍等もご存知でしたら押しえて下さい。お願いいたします。

  • Webサーバ上の*.cgiファイルは漏洩するのか?

    某社の安いレンタルサーバサービスを利用しています。 Webサーバのフォルダ内に、次のようにファイルとデータを格納しています。 /public_html/index.htm ---PHPスクリプトを呼び出す。 /public_html/program/*.php --- PHPスクリプト /public_html/program/data/meibo.cgi --- テキストファイル meibo.cgi は、通常、拡張子 txt とするテキストファイルですが、外部から読み取られる恐れが高いので、cgiにしてます。 PHPスクリプトは、meibo.cgi のデータをWebページに表示します。 こういう構成で、不正侵入者により meibo.cgi を読み取られる可能性があるんでしょうか。 ハッカーさんが、いろんなツールを使って、ファイル名を調べたり、ファイルを読み取ったりするものなのでしょうか。 よろしくお願いします。

  • PHPが動いてCGIが動かない?

    PHPが動くサーバーで、CGIを動かそうとしたら、動きません。 ダウンロードがはじまるのでもなく、サーバー上にファイルはあるのに、ファイルが見つかりません、となります。 これってどういうことですか? こちら側のパスの指定が間違っているのでしょうか? かなり困っています!

    • 締切済み
    • PHP
  • PHP、CGIについて

    PHPやCGIのプログラムを停止させた状態でwebページを見ることは可能でしょうか? 可能ならばどのようにやればいいのでしょう? 素人ですので言ってることがおかしいかもわかりません。 そのところ指摘してもらえればありがたいです。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • PerlでIf-Modified-Since取得

    Perlで書いているCGIで、 HTTP リクエストヘッダのIf-Modified-Sinceを取得したいのですが、 %ENVには入ってこないようです。 取得する方法があれば、教えて下さい。 ・.htaccess にSetEnvなどで記述することでできそうですが、方法が分かりません。 ・HTTP Request Header 全体を取得する方法でも結構です。 よろしくお願い致します。 環境は、さくらインターネットのレンタルサーバーのApacheです。

    • ベストアンサー
    • Perl
  • PHPのタイトルの取得

    こちら(http://wsd.zombie.jp/gw/php_curl_file_get_contents/)のページとこちら(https://www.php.net/manual/ja/funct ion.file-get-contents.php)のページを参考に別ページからタイトルを取得したいと思っているのですが、できませんでした。(上記のサイト様では、ヤフーニュースの取得ができるらしいのですが、表示されませんでした。) webページのタイトルを取得したいです。 index.phpファイル <a href>="ここに下記タイトルを取得"</a> ーサーバー上の別ページー page1.php <title>練習</title> このようにしたいので教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう