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


Find out system locale from PHP script on linux

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

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

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

但是当我在系统控制台中写入'locale'命令时,我得到'正确'的结果:

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

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

总体目的:

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

有一个方法从PHP获取真实的系统区域设置:

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

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

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

这将允许locale作为root执行,而不需要密码。