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

hor*_*bzz 7 php timezone date

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

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

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

php代码:好的

date_default_timezone_set('Europe/Berlin');
Run Code Online (Sandbox Code Playgroud)

php.ini:如果没有在源代码中设置,则不予考虑

date.timezone = 'Europe/Berlin'
Run Code Online (Sandbox Code Playgroud)

我还检查了我修改了正确的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.";
 }
Run Code Online (Sandbox Code Playgroud)

编辑3:哼,我想我在php.ini中找到了sthg :

 Configuration File (php.ini) Path : /usr/local/php533/php.ini 
 Loaded Configuration File : VOID !
Run Code Online (Sandbox Code Playgroud)

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

tpl*_*ner 6

我想你错过了引号:

date.timezone = "Europe/Berlin"
Run Code Online (Sandbox Code Playgroud)

该值是一个字符串,根据:PHP.net上的ini.date.timezone,必须用引号括起来.


hor*_*bzz 3

希望它可以帮助其他使用 Debian 的发行版:

已解决:
需要告诉 Apache 加载所需的php.ini文件

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

简而言之:
shell ENV

PHP_INI_SCAN_DIR=/pathtophpini
export PHP_INI_SCAN_DIR
Run Code Online (Sandbox Code Playgroud)

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
# ...
Run Code Online (Sandbox Code Playgroud)

/etc/init.d/apache2 restart   
Run Code Online (Sandbox Code Playgroud)

现在只需使用命令行中的 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
Run Code Online (Sandbox Code Playgroud)

更多文档:
关于这个非常特殊的一点,前提是关于该主题的文档很少,因为这是 apache 和 php 之间的一种共享责任主题:
在 stackoverflow
上的 php 手册
Askapache上