簡體   English   中英

通過命令行執行PHP

[英]Executing PHP via command line

我希望能夠通過命令行使用$ _GET變量執行PHP 我知道我可以使用exec來做到這一點,但我想更多地了解安全風險以及應該注意的事項。 我要傳遞的參數是從MySQL返回的MySQL auto_incremented ID ,因此我不關心用戶輸入。 但是,僅通過允許這種情況發生,就安全性應該考慮什么呢?

該腳本將接受訂單ID,並向客戶發送電子郵件發票。 這使我可以從站點的多個部分執行此功能,而僅將代碼保持在一個位置。

我認為您真的不需要從命令行執行此操作。 創建一個PHP函數並將其包含在您的多個部分中:它將更快。 例如:

function sendInvoice($orderId) {
    // do something
}

然后調用它:

include_once('send_invoice.inc.php');
sendInvoice(42);

這仍然允許代碼重用,並且可以在單個位置維護代碼。

為什么不能使用argv / argc?

$id = isset($argv[1]) ? (int)$argv[1] : (int)$_REQUEST['id'];

對於cmdline腳本, $argv是答案。 但是您確實也可以注入$_GET變量。 只需相應地預先定義QUERY_STRING環境變量:

putenv("QUERY_STRING=id=$id");
exec("php script.php");

關於安全性,如果cmdline php腳本啟動管理操作,則它們在共享主機服務器上可能會更令人擔憂。 但是您對此無能為力。 將cmdline腳本嚴格限制在document_root中,並盡可能應用文件或目錄權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM