从linux上的PHP脚本中找出系统区域设置

时间:2015-10-13 15:58:02

标签: php linux locale

我试图从Debian上的PHP脚本中找出系统区域设置。我的方式:

    <?php
    $out = shell_exec('locale');
    print_r($out);
    ?>

结果:

    LANG=C
    LANGUAGE=
    LC_CTYPE="C"
    LC_NUMERIC="C"
    ...

但是当我写“#loc;&#39;我的系统控制台中的命令我得到了正确的&#39;结果:

    LANG=ru_RU.UTF-8
    LANGUAGE=
    LC_CTYPE="ru_RU.UTF-8"
    LC_NUMERIC="ru_RU.UTF-8"
    ...

从PHP脚本获取系统区域设置的正确方法是什么?

总体目标: 在请求中,我接受一个文件路径,它可以包含西里尔符号。然后我需要访问此目录中的文件。所以我想让我的php脚本适用于使用不同语言环境的系统(例如ru_Utf8,Koi8-r)。

1 个答案:

答案 0 :(得分:1)

从PHP获取真正系统区域设置的一种方法

1)创建一个包含locale命令的.sh脚本(当然还有#!/bin/bash标题)

2)使用刚刚创建的sh脚本添加到/ etc / sudoers www-data ALL=NOPASSWD: /path/to/locale.sh

3)将您的PHP shell_exec更新为$out = shell_exec('sudo /bin/bash /path/to/locale.sh')

这将允许区域设置以root身份执行,而无需密码。