系统: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的方法......
答案 0 :(得分:6)
答案 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