繁体   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