Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP问题-设置时区时出现安全模式错误_Php_Timezone - Fatal编程技术网

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

我正在尝试在我的服务器上安装。但我得到了一个错误:

警告:putenv()[function.putenv]: 安全模式警告:无法设置 环境变量“PHP_TZ”-它是 不在中允许的列表中 …第14行的/public/timezone.inc

我找到了有问题的文件和代码部分(如下)。如何修复此代码?PHP_TZ应该做什么?为什么PHP不喜欢它?我能做些什么呢

//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”]));
}
}