PHP escape shell arg不需要的行为

PHP escape shell arg不需要的行为,php,shell,encoding,Php,Shell,Encoding,当我这样做时,它返回“rfrence”。我们如何解决问题?这几乎可以肯定是由于您的系统区域设置造成的。与设置为区域设置的编码相比,参数使用的是什么字符串编码?作为调试步骤,您可以尝试使用强制UTF-8 setlocale(LC_CTYPE, "en_US.UTF-8"); 在调用escapeshellarg并查看是否有帮助之前。无法复制:-您可能对系统有隐藏的依赖关系。找到它们并在问题中描述它们。您正在使用的计算机的系统管理员可能会向您提供有关产生此副作用的依赖项的更多信息。相关:编辑您的帖子

当我这样做时,它返回“rfrence”。我们如何解决问题?

这几乎可以肯定是由于您的系统区域设置造成的。与设置为区域设置的编码相比,参数使用的是什么字符串编码?作为调试步骤,您可以尝试使用强制UTF-8

setlocale(LC_CTYPE, "en_US.UTF-8");

在调用escapeshellarg并查看是否有帮助之前。

无法复制:-您可能对系统有隐藏的依赖关系。找到它们并在问题中描述它们。您正在使用的计算机的系统管理员可能会向您提供有关产生此副作用的依赖项的更多信息。相关:编辑您的帖子以包含您所需的输出。Good luck.PHP 5.3.10-1ubuntu3.4使用Suhosin补丁(cli),您可以使用
var\u dump(setlocale(LC\u CTYPE,“”)获取设置的区域设置-输出应该会发出更多的光。请参阅:-这是底层系统函数PHP调用。在终端echo$LNAG中,刚刚返回en_US.UTF-8。但我也尝试了setlocale(LC_CTYPE,“en_US.UTF-8”);同样的结果。顺便说一句,echo'référencement'返回'référencement'您如何查看结果?您的终端/页面文本编码是否设置为UTF8?我正在终端内部运行该设置。老实说,我不理解这个问题。fyi:
référencement
-即UTF-8显示为ISO-8859-1-这将是无效的UTF-8,然后删除的无效字节序列将创建您的结果。检查PHP文件的编码是否与系统文件名匹配。您需要在此进行一些校准以确保安全。您的终端可能被设置为将结果解释为ISO-8859。您能看到服务器返回的任何UTF-8吗?