2010-11-22 15 views
7

Antecedentes: tengo un código que comprueba si un usuario tiene una sesión válida antes de procesar la página php que me gustaría establecer como el archivo auto_preparado. Sin embargo, debo excluir que la página donde el usuario intenta iniciar sesión requiera una sesión válida. Me gustaría poder establecer el valor auto_prepend_file por directorio.Cómo configurar la directiva auto_prepend_file de Php por directorio?

Medio Ambiente: PHP 5.2.6m Apache 2, usando PHP como CGI no como mod_php, en Windows (si lo que importa) y en una máquina que tengo un control completo sobre (no es un entorno alojado)

Uso un archivo htaccess está fuera b/c No estoy usando mod_php. No he podido modificar el archivo php.ini para establecer el archivo auto_prepair, el servidor arroja un error interno. Y ini_set() no funciona b/c, ya ha cargado el archivo de comprobación de la sesión antes de que pueda cambiar el valor de auto_prepend_file.

No veo una forma de establecer auto_prepend_file por directorio si no está utilizando mod_php/htaccess. ¿Me estoy perdiendo de algo?

+1

¿Qué software de servidor web utiliza? – Gumbo

+0

@Gumbo buen punto ... recién actualizado para decir Apache 2 – CLJ

Respuesta

5

menciona que no puede utilizar archivos .htaccess, pero se puede hacer modificaciones a httpd.conf y hacer algo como esto:

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

EDITAR - acabo de dar cuenta esto no funciona cuando se ejecuta como CGI. Sin embargo, creo que una cosa que va a funcionar es si se crea una copia de su archivo php.ini, lo coloca en el directorio, y poner su directiva anteponer allí como:

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

Eso no funcionó para mí en mi sistema ... ¿debería funcionar? – CLJ

+0

funciona bien para mí, probado en Windows local box – robjmills

+0

¿Qué podría estar impidiendo que esto funcione en mi máquina? Cuando pongo esa línea, aparece este mensaje de error cuando reinicio Apache: Comando inválido 'Php_value', tal vez mal escrito o definido por un módulo no incluido en la configuración del servidor – CLJ

0

Hay un gran tutorial denominado: Automatically Include Files with PHP & Apache que explican cómo hacer eso con la directiva de Apache y código PHP para anexar al final. En primer lugar, definir un archivo de atrapar la página antes de que sea emitida y añadir lo que quiera:

<?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"); 
?> 

continuación, agregue la directiva de Apache a su máquina virtual. Es necesario anteponer a el archivo PHP con el fin de utilizar el método de ob_start():

<Directory "/path/to/folder"> 
    AddType application/x-httpd-php .html .htm 
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php 
</Directory> 
Cuestiones relacionadas