php使用escapeshellarg時中文被過濾的解決方法
本文分析了php使用escapeshellarg時中文被過濾的解決方法。分享給大家供大家參考。具體如下:
一、問題:
同樣的代碼,發(fā)現通過 localhost/index.php 訪問,和在 shell 中通過 php ./index.php 運行結果卻不一樣。
在程序中需要通過 shell_exec 來執(zhí)行一個 linux 程序,而它的輸入來自 echo ,即:
shell_exec('echo '.escapeshellarg($str).' | some_cmd 2>&1');
二、解決方法:
而這個 $str 中可能包含中文的。一開始我還以為是 some_cmd 自己把中文濾掉,后來發(fā)現是 escapeshellarg 的問題。
貌似出現這個問題的不多,經過查詢與測試發(fā)現原來是 shell 和 apache php-cgi 的運行環(huán)境不同引起的。
在 php 中加入:
setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8");
就正常了!
希望本文所述對大家php程序設計有所幫助。
相關文章
PHP中 empty() 和 isset() 的區(qū)別介紹
作為PHP中經常用來判斷變量是否為空的函數:empty()和isset() ,二者其實在很多方面還是存在區(qū)別的,本文將為大家詳細介紹一下他們的區(qū)別之處,需要的朋友可以了解一下2021-12-12php獲取服務器端mac和客戶端mac的地址支持WIN/LINUX
這篇文章主要介紹了php獲取服務器端mac和客戶端mac地址的方法,需要的朋友可以參考下2014-05-05PHP pthreads v3在centos7平臺下的安裝與配置操作方法
這篇文章主要介紹了PHP pthreads v3在centos7平臺下的安裝與配置操作方法,結合圖文與實例形式分析了PHP pthreads v3在centos7平臺下的安裝與配置操作具體步驟、相關命令與注意事項,需要的朋友可以參考下2020-02-02php ob_flush,flush在ie中緩沖無效的解決方法
一些版本的 Microsoft Internet Explorer 只有當接受到的256個字節(jié)以后才開始顯示該頁面,所以必須發(fā)送一些額外的空格來讓這些瀏覽器顯示頁面內容。2010-05-05