2010-11-22 1 views
7

배경 : auto_prepend_file로 설정하려는 PHP 페이지를 처리하기 전에 사용자가 유효한 세션을 가지고 있는지 확인하는 코드가 있습니다. 그러나 사용자가 로그인을 시도하는 페이지에서 유효한 세션이 필요하지 않도록 제외해야합니다. auto_prepend_file 값을 디렉토리 단위로 설정할 수 있기를 원합니다.디렉토리 당 PHP의 auto_prepend_file 지시어를 설정하는 방법은 무엇입니까?

환경 : PHP의 5.2.6m 아파치 (2), CGI로 PHP를 실행하지 않는 방법 mod_php로, Windows에서 (이 중요한 경우) 내가 완벽하게 제어 할 이상이 기계 (하지 호스팅 환경)

에 사용 htaccess 파일이 b/c입니다. mod_php를 사용하고 있지 않습니다. auto_prepend_file을 설정하기 위해 php.ini 파일을 변경할 수 없었습니다. 서버가 내부 오류를 발생시킵니다. 그리고 ini_set()은 작동하지 않습니다. b/c auto_prepend_file 값을 변경하기 전에 이미 세션 검사 파일을로드했습니다.

mod_php/htaccess를 사용하지 않는 경우 디렉토리별로 auto_prepend_file을 설정하는 방법이 없습니다. 내가 놓친 게 있니? - CGI로 실행하면 그냥이 나던 일을 실현

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

편집 :

+1

당신이 어떤 웹 서버 소프트웨어를 사용합니까 : 당신은 ob_start() 방법을 사용하기 위해 앞에 추가 PHP 파일이 필요하십니까? – Gumbo

+0

@ Gumbo 좋은 지적 ... 아파치 2를 말하기 위해 업데이트했습니다. – CLJ

답변

2

사용 .user.ini 파일 : 당신이 당신의 php.ini 파일의 복사본을 만들 디렉토리에 배치하고, 같은 거기에 당신의 앞에 추가 지시어를 넣으면 작동 할 한 가지가 있지만 내 생각 . Automatically Include Files with PHP & Apache아파치 지시어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 지시문을 가상 호스트에 추가하십시오.

<Directory "/path/to/folder"> 
    AddType application/x-httpd-php .html .htm 
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php 
</Directory> 
관련 문제