《PHP實戰(zhàn):php使用escapeshellarg時中文被過濾的解決方法》要點:
本文介紹了PHP實戰(zhàn):php使用escapeshellarg時中文被過濾的解決方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
本文分析了php使用escapeshellarg時中文被過濾的解決方法.分享給大家供大家參考.具體如下:PHP學(xué)習(xí)
一、問題:PHP學(xué)習(xí)
同樣的代碼,發(fā)現(xiàn)通過 localhost/index.php 訪問,和在 shell 中通過 php ./index.php 運行Y果卻不一樣.PHP學(xué)習(xí)
在程序中需要通過 shell_exec 來執(zhí)行一個 linux 程序,而它的輸入來自 echo ,即:PHP學(xué)習(xí)
shell_exec('echo '.escapeshellarg($str).' | some_cmd 2>&1');
二、解決方法:PHP學(xué)習(xí)
而這個 $str 中可能包含中文的.一開始我還以為是 some_cmd 自己把中文濾掉,后來發(fā)現(xiàn)是 escapeshellarg 的問題.
貌似出現(xiàn)這個問題的不多,經(jīng)過查詢與測試發(fā)現(xiàn)原來是 shell 和 apache php-cgi 的運行環(huán)境不同引起的.
在 php 中加入:PHP學(xué)習(xí)
setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8");
就正常了!PHP學(xué)習(xí)
希望本文所述對大家php程序設(shè)計有所幫助.PHP學(xué)習(xí)
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5871.html