我试图从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执行,而不需要密码。