2011-06-22 10 views
7

Sistema: Debian Lenny/Apache 2.2/php5.3.3 recopilada de fuentesphp5.3.3 date.timezone Directiva de nuevo php.ini no se tiene en cuenta

estoy strugglying con el date.timezone dentro de php.ini.

Puedo definir el TZ utilizando el código fuente de php, pero me gustaría corregirlo de una vez en el archivo ini.

código php: Ok

date_default_timezone_set('Europe/Berlin'); 

php.ini: No se tiene en cuenta si no ha configurado dentro del código fuente

date.timezone = 'Europe/Berlin' 

También comprobé que he modificado la derecha php.ini archivo y tiene interferencia con algunos archivos php.default.ini.
Comprobé dentro de los archivos de configuración de apache si habría una interferencia en los datos de env TZ, pero ninguno.

No sabe qué hacer más, por lo que cualquier consejos serán bienvenidos,

THX de antemano.

EDIT: También intenté sin o con comillas simples o dobles como date.timezone = 'Europe/Berlin', pero todavía obtengo un "no value" en el phpinfo.

Edit2: Tanto phpinfo() y el siguiente retorno de escritura de la prueba que el date.timezone está vacía (por ejemplo, no tiene valor.):

date_default_timezone_set('America/Los_Angeles'); 
$script_tz = date_default_timezone_get(); 
$iniset = ini_get('date.timezone') ; 
if (strcmp($script_tz, $iniset)){ 
    echo "Script timezone ($script_tz) differs from ini-set timezone ($initset)."; 
} else { 
    echo "Script timezone ($script_tz) and ini-set timezone match."; 
} 

Edit3: hum, supongo que encontré sthg en el php.ini :

Configuration File (php.ini) Path : /usr/local/php533/php.ini 
Loaded Configuration File : VOID ! 

así que tengo que encontrar la manera de asegurarse de que Apache está buscando el php.ini derecho de alguna manera ...

+0

*** Nota: *** El archivo '' php.ini' de php-cli' es diferente entonces archivo '' php.ini' de apache2'. Sugiero un enlace simbólico entre ellos para mantenerlos sincronizados y evitar confusiones. –

Respuesta

2

esperan que los pueda ayudar a otros en Debian, como distribuciones:

resuelto:
necesario para decirle a Apache para cargar el querido php.ini archivo

Contexto:
PHP cargado como un módulo de Apache (por ejemplo, DSO)

cómo En resumen:
shell ENV

PHP_INI_SCAN_DIR=/pathtophpini 
export PHP_INI_SCAN_DIR 

http.conf

# ... 
# DSO Modules: PHP as an Apache module 
SetEnv PHPRC /usr/pathtophpini 
SetEnv PHP_INI_SCAN_DIR /usr/pathtophpini 

LoadModule php5_module /pathtophpmod/libphp5.so 
PHPINIDir /pathtophpini 
# ... 

Shell

/etc/init.d/apache2 restart 

Ahora acaba de comprobar que el archivo de configuración cargada php.ini es el más adecuado, ya sea usando el php-cli en la línea de comandos o phpinfo():

/path/to/your/phpcli/bin/php -i | grep php.ini | tail -n2 
# which gives you the expected answer 
Configuration File (php.ini) Path => /pathtophpini/php.ini 
Additional .ini files parsed => /pathtophpini/php.ini 

Algunos más documentación:
en ese punto muy particular, siempre que haya muy pocos documentos sobre ese tema, ya que este es un tipo de tema de responsabilidad compartida entre apache y php matters:
on stackoverflow
on php manual
askapache

+0

Sería bueno señalar que para la variable de shell se espera un directorio, pero la configuración de apache quiere la ruta a la interfaz real, creo. – redreinard

6

creo que se está perdiendo las comillas:

date.timezone = "Europe/Berlin" 

El valor es una cadena de acuerdo a: ini.date.timezone on PHP.net que debe ser envuelto entre comillas.

+0

Thx, pero ese no era el punto en mi caso. – hornetbzz

+0

¡No es cierto! La directiva 'php.ini'' date.timezone' espera una cadena correcta, pero las comillas NO son obligatorias. A diferencia de la alternativa de tiempo de ejecución: 'date_default_timezone_set ('Europe/Berlin');' que (al estar dentro del código php) requiere las comillas. ¡Simplemente poniendo las cosas bien! ;) –

Cuestiones relacionadas