[英]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.