簡體   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