代码之家  ›  专栏  ›  技术社区  ›  Greg

PHP问题-设置时区时出现安全模式错误

  •  2
  • Greg  · 技术社区  · 15 年前

    我想安装一个 PHP application 在我的服务器上。但我得到了一个错误:

    安全模式警告:无法设置 不在中的允许列表中 …/公开/时区公司第14行

    我已经找到了有问题的文件和部分代码(如下)。如何修复此代码?你要怎么做?为什么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"]);
        }
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   HoLyVieR    15 年前

    PHPèTZ代表PHP时区。

    从5.1版开始,您需要通过 date_default_timezone_set 函数或从您的PHP配置。根据文件:

    注:

    由于PHP5.1.0(重写日期/时间函数时),如果时区无效,每次调用日期/时间函数都会生成一个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"]));
        }
    }
    
        2
  •  1
  •   Mischa    15 年前

    默认情况下,您 能够设置它。请参见下面的粗体部分。似乎你的主机提供商通过 safe_mode_protected_env_vars .

    bool putenv ( string $setting )

    将设置添加到服务器 环境。环境变量 将只存在于 请求将环境还原到 它的原始状态。

    设置某些环境变量 可能是潜在的安全漏洞。 指令包含逗号分隔的 用户只能更改环境 名称以 此指令提供的前缀。 默认情况下,用户只能 使用PHPè(例如PHPèFOO=BAR)。 注:如果 此指令为空,PHP将允许 用户可以修改任何环境 变数!

    指令包含逗号分隔的 最终用户将无法更改 使用putenv()。这些变量将 安全模式允许环境变量设置为

    推荐文章