2010-11-22 19 views
7

背景:auto_prepend_fileとして設定したいPHPページを処理する前に、ユーザーが有効なセッションを持っているかどうかを調べるコードがあります。しかし、ユーザーがログインしようとするページを有効なセッションから除外する必要があります。 auto_prepend_fileの値をディレクトリ単位で設定できるようにしたいと考えています。ディレクトリごとにPhpのauto_prepend_fileディレクティブを設定する方法は?

環境:PHPの5.2.6mのApache 2、CGIとしてPHPを実行していないmod_phpのように、Windows上で(それが重要な場合)と、私は完全に制御をオーバーしたマシン(ホスト環境ではない)

に使用htaccessファイルがb/cです。mod_phpを使用していません。 auto_prepend_fileを設定するためにphp.iniを変更することができませんでした。サーバは内部エラーをスローします。また、ini_set()は動作しませんので、auto_prepend_fileの値を変更する前にすでにセッションチェックファイルをロードしています。

mod_php/htaccessを使用していない場合、ディレクトリ単位でauto_prepend_fileを設定する方法はありません。何か不足していますか? - CGIとして実行しているときだけ、このdoesntの仕事を実現

<Directory "c:/wamp/www/dev/"> 
    Php_value auto_prepend_file c:/wamp/www/dev/prepend.php 
</Directory> 

EDIT

+1

あなたはどのようなWebサーバーソフトウェアを使用していますか? – Gumbo

+0

@Gumbo良い点...ちょうどApache 2と言って更新されました – CLJ

答えて

2

使用.user.iniファイル:あなたは、php.iniファイルのコピーを作成するディレクトリに置き、そしてようにそこにあなたの先頭に追加のディレクティブを配置した場合に動作することを一つのことですが、私は思います。 Automatically Include Files with PHP & ApacheApacheのディレクティブPHPコードで終わりに追加することを行う方法について説明します

http://php.net/manual/en/configuration.file.per-user.php

+1

これは非常に有望なようです... – CLJ

+0

私は現在PHP 5.2.6 ....を実行しています! – CLJ

+0

あなたがそれを支配すれば、アップグレードする価値があります。それ以外の場合は、Apacheのメイン設定ファイルを編集する必要があります。 – Matthew

5

はあなたが.htaccessファイルを使用することはできませんが、あなたがhttpd.confのに変更を加えると、このような何かを行うことができます言及します。

auto_prepend_file = c:/wamp/www/dev/prepend.php 
+0

私のシステムではうまくいきませんでした。 – CLJ

+0

は私のためにうまく動作し、ローカルのウィンドウボックスでテストされました – robjmills

+0

私のマシンでこれが動作しない原因になるのは何ですか?私はその行を置くとき、私はこのエラーメッセージが表示されます:無効なコマンド 'Php_value'、おそらくスペルが間違っているか、サーバーの設定に含まれていないモジュールで定義されています – CLJ

0

と呼ばれる偉大なチュートリアルがあります。まず、それが出力される前のページをキャッチし、あなたが望むものは何でも追加するファイルを定義します。

<?php 
{ 
    $script = <<<GA 
<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-xxxxxxxxx-y']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 
</script> 
GA; 
    $replace = array('</body>','</BODY>'); 
    $page = str_replace($replace, "{$script}\r</body>", $page); 
// $replace2 = array('</title>','</TITLE>'); 
// $page = str_replace($replace2, " - My Awesome Site</title>", $page); 
    return $page; 
} 
ob_start("appendToFile"); 
?> 

は、その後、あなたの仮想ホストにApacheのディレクティブを追加します。あなたはob_start()メソッドを使用するために先頭に追加 PHPファイルに必要です:

<Directory "/path/to/folder"> 
    AddType application/x-httpd-php .html .htm 
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php 
</Directory> 
関連する問題