问题描述
||
系统: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数据,但没有。
不知道该怎么做,因此任何提示都会受到欢迎,
提前。
编辑:
我也尝试使用没有或用单引号或双引号作为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中找到了sthg:
Configuration File (PHP.ini) Path : /usr/local/PHP533/PHP.ini
Loaded Configuration File : VOID !
所以我必须找到一种方法来确保Apache正在以某种方式寻找正确的PHP.ini ...
解决方法
我认为您缺少引号:
date.timezone = \"Europe/Berlin\"
该值是一个字符串,其依据是:PHP.net上的ini.date.timezone,必须用引号引起来。
, 希望它可以像detros一样帮助其他人:
解决了:
需要告诉Apache加载所需的php.ini文件
内容:
PHP作为Apache模块(例如DSO)加载
简而言之:
外壳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-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事项之间的一种共同责任主题:
在stackoverflow上
在PHP手册上
阿卡帕奇