2011-02-10 10 views
5

Necesito establecer el php_value session.save_path en .htaccess. Esto parece requerir una ruta completa, una ruta relativa no parece funcionar.hacer php_value condicional en .htaccess?

Mi aplicación web se ejecuta en servidores Windows y Linux y me gustaría mantener el mismo archivo .htaccess en ambos sistemas, por motivos de implementación.

¿Es posible hacer referencia al directorio en el .htaccess es, en el archivo .htaccess en sí, algo como esto:

php_value session.save_path "<% systemPath>/sesiones"

con <% systempath> se completa automáticamente en cada sistema?

+0

Interesante pregunta. Podría ser posible usar variables de entorno - No sé –

+0

Referencia: http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv –

Respuesta

1

No creo que esto sea posible con ninguna directiva Apache.

Pero se puede hacer eso con PHP:

ini_set('session.save_path', dirname(__FILE__).'/sessions'); 

Aquí __FILE__ es el magic constant que contiene la ruta del sistema de archivos al archivo de script PHP actual y dirname devuelve el directorio padre de ese archivo.

+0

Gracias pero prefiero hacerlo en .htaccess ya que tengo varias secuencias de comandos que usan sesiones. Con .htaccess, solo tendría que establecer esta ruta en un solo lugar ... – Dylan

+0

+1 @Dylan: Apache no admite el uso de variables en .htaccess. 'mod_env' le permite establecer (solo) variables de entorno, y' mod_rewrite' le permite usarlas en reglas y condiciones de reescritura, pero eso es todo. – netcoder

1

Sé que puede usar algunas variables de entorno.

Puede comprobar si va Posible o no con

%{ENV:variable} 
+0

Desafortunadamente, solo funciona en 'mod_rewrite'. – netcoder

2

puede anteponer automáticamente un archivo PHP que se configure PHP con ini_set()

# .htaccess 
php_value auto_prepend_file "autoprepend.php" 

continuación:

// autoprepend.php 
ini_set('session.save_path', __DIR__ . '/sessions'); 

De esta forma funcionará para cualquier script php dentro del directorio.

0

en apache .htaccess, por ejemplo, aplique php_value solo archivos php.

SetEnvIf Request_URI ".php$" IS_PHP 
<If "-T env('IS_PHP')"> 
    php_value auto_prepend_file "./init.php" 
</If> 
Cuestiones relacionadas