php使用escapeshellarg时中文被过滤的问题怎么解决-创新互联

本篇内容介绍了“php使用escapeshellarg时中文被过滤的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、外贸网站建设、岱岳网络推广、微信平台小程序开发、岱岳网络营销、岱岳企业策划、岱岳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联为所有大学生创业者提供岱岳建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

一、问题:


同样的代码,发现通过 localhost/index.php 访问,和在 shell 中通过 php ./index.php 运行結果却不一样。

在程序中需要通过 shell_exec 来执行一个 linux 程序,而它的输入来自 echo ,即:

shell_exec('echo '.escapeshellarg($str).' | some_cmd 2>&1');

二、解决方法:

而这个 $str 中可能包含中文的。一开始我还以为是 some_cmd 自己把中文滤掉,后来发现是 escapeshellarg 的问题。
貌似出现这个问题的不多,经过查询与测试发现原来是 shell 和 apache php-cgi 的运行环境不同引起的。
在 php 中加入:

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

就正常了!

“php使用escapeshellarg时中文被过滤的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


新闻标题:php使用escapeshellarg时中文被过滤的问题怎么解决-创新互联
链接URL:http://pwwzsj.com/article/degphj.html