我需要将一个多字参数从PHP传递给Python。
仅传递一个单词就没有问题,但是,如何添加其他参数才能成功解决问题?
我尝试了几种方法来传递附加参数,但均未成功,这会导致500 Internal Server Error或python脚本无响应。使用2>&1也不返回任何错误消息。
在六个实例中,附加参数是可选的或为成功响应所必需。
我可以发送一个单词参数:
$command = escapeshellcmd("python /home/nova_api.py 'getwithdrawalhistory' 2>&1");
这将返回以下正确响应:
{"items":[],"message":"Your trade history with recent first","page":1,"pages":0,"perpage":100,"status":"success","total_items":0}
我试图将其他参数从PHP传递到Python:
$command = escapeshellcmd("python /home/nova_api.py 'getwithdrawalhistory, { \'page\': 1 }' 2>&1");
$command = escapeshellcmd("python /home/nova_api.py 'getwithdrawalhistory, { \'page\': \'1\' }' 2>&1");
$command = escapeshellcmd("python /home/nova_api.py 'getwithdrawalhistory, { \'page\': \"1\" }' 2>&1");
这三个结果均显示为空白页-没有响应,也没有返回错误。
答案 0 :(得分:0)
通过转义,您正在做正确的事情,但是使用escapeshellcmd
不是您想要的。它没有参数的概念,因此无法按您期望的方式工作。 PHP为外壳命令提供了a method to quote and escape individual arguments:
<?php
$cmd = "python";
$args = [
"/home/nova_api.py",
"getwithdrawalhistory, { 'page': 1 }",
];
// just a fancy way of avoiding a foreach loop
$escaped_args = implode(" ", array_map("escapeshellarg", $args));
$command = "$cmd $escaped_args 2>&1";