php5.3.3 date.timezone再次没有考虑php.ini指令

时间:2011-06-22 00:54:15

标签: date timezone php

系统:Debian Lenny / Apache 2.2 / php5.3.3从源代码编译

我正在与php.ini中的date.timezone进行斗争。

我可以在php源代码中定义TZ,但我想在ini文件中立即修复它。

php代码:好的

date_default_timezone_set('Europe/Berlin');

php.ini :如果未在源代码中设置

,则不予考虑
date.timezone = 'Europe/Berlin'

我还检查过我修改了正确的 php.ini 文件并干扰了某些 php.default.ini 文件。
我在apache配置文件中检查了是否存在干扰TZ env数据,但没有。

不知道该怎么做,所以欢迎任何提示,

提前thx。

编辑: 我也试过没有或单引号或双引号作为date.timezone ='Europe / Berlin',但我仍然在phpinfo中得到“无价值”。

EDIT2: phpinfo()和以下测试脚本都返回date.timezone为空(例如没有值):

 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 :哼,我想我在 php.ini 中找到了......:

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

所以我必须找到确保Apache以某种方式寻找合适的php.ini的方法......

2 个答案:

答案 0 :(得分:6)

我认为你错过了引号:

date.timezone = "Europe/Berlin"

该值是一个字符串,符合:ini.date.timezone on PHP.net,必须用引号括起来。

答案 1 :(得分:2)

希望它可以帮助其他人像debian这样的发行版:

<强>解决:
需要告诉Apache加载想要的 php.ini 文件

<强>上下文
PHP作为Apache模块加载(例如DSO)

总之:
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   

现在只需使用命令行中的php-cli或phpinfo()检查加载的配置文件 php.ini 是否正确:

/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

更多文档:
在这一特定点上,前提是关于该主题的文档非常少,因为这是apache和php之间的一种共享责任主题:
on stackoverflow
on php manual
askapache