[英]Execute external application with PHP
我有一個 linux 命令行,需要通過 PHP 或 Javascript(首選 PHP)執行。
命令是keygen AB3554C1D1971DB7 \pc_code 365
但是,我想用 $pccode 之類的字符串替換\pc_code
,用戶在其中輸入生成的 PC 代碼。 這是一個合法的項目,但程序的創建者給我提供了幫助。
你可以使用shell_exec() :
$cmd = sprintf("keygen AB3554C1D1971DB7 %s 365",
escapeshellarg($pccode));
$result = shell_exec($cmd);
每當您執行外部命令時,您都必須非常小心以避免命令注入。 您可以使用escapeshellarg()來防止這種情況。
看看執行
可能是這個程序寫得不好,將它的信息輸出到 stderr 而不是 stdout。 或者可能是它失敗並(正確地)將錯誤消息打印到 stderr。 在任何一種情況下,shell_exec 都不會捕獲 stderr。 但是,您應該能夠通過在命令末尾添加“ 2>&1
”來捕獲 stderr ,即:
$result = shell_exec('keygen AB3554C1D1971DB7 \pc_code 365 2>&1');
echo '<pre>'.htmlspecialchars($result).'</pre>';
編輯:為了連續性,解決問題的是下面另一個答案的評論中提到的內容:
也許它不喜歡裸露的反斜杠? 你可以試試“
\\pc_code
”
從 JavaScript 執行 Linux 命令是不可能的(也不應該)。 假設您指的是在客戶端 Web 瀏覽器上運行的 JavaScript,則不會有任何安全模型可以保護人們免受惡意命令行訪問。 PHP 是另一回事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.