繁体   English   中英

PHP shell_exec 不同的输出

[英]PHP shell_exec different output

shell_exec 怎么可能给出与手动触发命令时不同的结果? 我正在执行

shell_exec('/usr/bin/wc --words ' . $filepath). 

我的 PHP 是 7.4.3 ,我也试过wc -w 当从 shell 手动触发时,它会提供不同的输出。 我已经使用 shell 中的 webmaster 用户对其进行了测试,并且它在 web 上的 webmaster 用户下运行。 我已经通过运行whoami对此进行了测试。 它只是没有任何意义。 它不会给出任何错误或任何东西,它只是给出不同的输出。 当我从 shell 与 webmaster 一起运行它时,它会提供一个常规的输出,eq。 确切的字数。 任何人都知道在哪里看,因为我已经尝试过用户和权限?

确保使用相同的语言环境,尤其是对于LC_CTYPE字符编码设置。 不同的语言对单词和非单词字符有不同的理解:

gnu/linux$ echo 'الدروس المستفادة من' | LC_CTYPE=C wc -w
0
gnu/linux$ echo 'الدروس المستفادة من' | LC_CTYPE="en_US.UTF-8" wc -w
3

您可能还会看到wc版本之间的差异,在 macOS 上:

macos$ echo 'الدروس المستفادة من' | LC_CTYPE=C wc -w
   3
macos$ echo 'الدروس المستفادة من' | LC_CTYPE="en_US.UTF-8" wc -w
   5

有时很难预测最终会使用哪种语言环境,因为它可以由单个应用程序、用户配置、系统默认设置,甚至是用户通过 SSH 访问的系统上的设置进行设置。

要查看当前有效的语言环境,您可以运行locale 从那里复制设置以使数字匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM