2011-06-22 25 views
7

系统:Debian的莱尼/阿帕奇2.2/php5.3.3来源php5.3.3 date.timezone再次php.ini指令不考虑

我用的php.ini中的date.timezone strugglying编译。

我可以在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中得到一个“no value”。

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

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

所以我必须找到使方式,以确保Apache是​​寻找合适的php.ini莫名其妙...

+0

***注:***了'PHP-cli'的'php.ini'文件是不同的,那么'apache2'的'php.ini'文件。我建议将符号链接到另一个以保持同步并避免混淆! –

回答

2

希望它可以帮助别人在Debian的发行版一样:

解决:
需要告诉Apache来加载想要PHP。INI文件

上下文:
PHP装载作为Apache模块(例如DSO)

HOW简称:
壳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 
# ... 

壳牌

/etc/init.d/apache2 restart 

现在只需检查所装载的配置文件的php.ini是正确的或者使用PHP-CLI命令行中的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 

一些更文档:
就这一点而言,前提是该主题上的文档非常少,因为这是apache和php之间的一种共享责任主题:
on stackoverflow
on php manual
askapache

+0

这将是一件很好的事情,对于shell变量,它期望一个目录,但apache配置需要实际的ini我认为的路径。 – redreinard

6

我想你错过了引号:

date.timezone = "Europe/Berlin" 

值是根据字符串:ini.date.timezone on PHP.net必须用引号引用。

+0

Thx但这不是我的情况。 – hornetbzz

+0

不正确! 'php.ini'指令'date.timezone'需要一个字符串,但引号不是必需的。这与运行时替代不同:'date_default_timezone_set('Europe/Berlin');'(在php代码中)正确的需要引号。只要设置正确的东西! ;) –