PHP问题-设置时区时出现安全模式错误
我正在尝试在我的服务器上安装。但我得到了一个错误: 警告:putenv()[function.putenv]: 安全模式警告:无法设置 环境变量“PHP_TZ”-它是 不在中允许的列表中 …第14行的/public/timezone.inc 我找到了有问题的文件和代码部分(如下)。如何修复此代码?PHP_TZ应该做什么?为什么PHP不喜欢它?我能做些什么呢PHP问题-设置时区时出现安全模式错误,php,timezone,Php,Timezone,我正在尝试在我的服务器上安装。但我得到了一个错误: 警告:putenv()[function.putenv]: 安全模式警告:无法设置 环境变量“PHP_TZ”-它是 不在中允许的列表中 …第14行的/public/timezone.inc 我找到了有问题的文件和代码部分(如下)。如何修复此代码?PHP_TZ应该做什么?为什么PHP不喜欢它?我能做些什么呢 //set the timezone if ($configdata["timezone"] != "") { putenv("PH
//set the timezone
if ($configdata["timezone"] != "") {
putenv("PHP_TZ=" . stripslashes($configdata["timezone"]));
putenv("TZ=" . stripslashes($configdata["timezone"]));
//for >= PHP 5.1
if(function_exists("date_default_timezone_set")) {
date_default_timezone_set($configdata["timezone"]);
}
我使用的是PHP5.2.10。对于$configdata[“timezone”]的值,我尝试了“Europe/Zurich”和“UTC”,但都得到了相同的错误。默认情况下,您应该能够设置它。请参阅下面的粗体部分。您的主机提供商似乎通过安全模式\u受保护的\u环境\u vars
禁用了它
将设置添加到服务器
环境环境变量
将仅在
当前请求。最后
请求将环境还原到
它的原始状态
设置某些环境变量
可能是潜在的安全漏洞。
安全模式允许环境变量
指令包含逗号分隔的字符
前缀列表。在安全模式下
用户只能更改环境
名称以
此指令提供的前缀。
默认情况下,用户只能
设置开始的环境变量
使用PHP_u10;(例如PHP_0;FOO=BAR)。注意:如果
此指令为空,PHP将允许
用户可以修改任何环境
变数
安全模式受保护的环境变量
指令包含逗号分隔的字符
环境变量列表,即
最终用户将无法更改
使用putenv()。这些变量将
即使
安全模式允许环境变量设置为
允许更改它们
霍利维尔的解决方案听起来是个好主意。PHP\u TZ代表PHP时区 从5.1版开始,您需要通过函数或PHP配置进行设置。从文件中: 注: 自PHP 5.1.0(重写日期/时间函数时)以来,如果时区无效,每次调用日期/时间函数都将生成一条E_通知,如果使用系统设置或TZ环境变量,和/或一条E_警告消息。 您可以做的最简单的修复方法如下
//set the timezone
if ($configdata["timezone"] != "") {
//for >= PHP 5.1
if(function_exists("date_default_timezone_set")) {
date_default_timezone_set($configdata["timezone"]);
// for PHP < 5.1
} else {
putenv("PHP_TZ=" . stripslashes($configdata["timezone"]));
putenv("TZ=" . stripslashes($configdata["timezone"]));
}
}
//设置时区
如果($configdata[“时区”]!=“”){
//对于>=PHP5.1
如果(存在函数(“日期\默认值\时区\设置”)){
日期默认时区设置($configdata[“时区]);
//对于PHP<5.1
}否则{
putenv(“PHP_TZ=“.stripslashes($configdata[“timezone”]));
putenv(“TZ=“.stripslashes($configdata[“timezone”]));
}
}