shell_exec()没有运行完整命令

时间:2015-06-30 17:36:42

标签: php python shell shell-exec

python代码需要4个参数,并且在error.log中抱怨它没有得到所有这些参数(sys.argv [3]和[4]的索引错误)。我注意到的是print_r($ command)将在控制台中按预期打印完整命令:

python3 ../TD/login.py someuser somepass XXXX 1.0

但是当我尝试通过复制手动运行代码并将其从浏览器控制台粘贴到shell时,剪贴板中的粘贴会在“somepass”之后立即切断,因此我错过了最后两个参数。我有一种感觉这就是为什么python在被PHP执行时抱怨的原因,但我不确定如何解决它。有问题的代码如下:

$tdPlainPass = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$storePass,$row["td_pass"],MCRYPT_MODE_CBC,$row["td_salt"]);
$command = "python3 ../TD/login.py " . $row["td_user"] . " " . $tdPlainPass . " XXXX 1.0";
print_r($command);
$resultJSON = json_decode(shell_exec($command), true);
print_r($resultJSON);
return;

作为额外的,如果我使用escapeshellcmd()封装字符串,它将不再打印print_r($ command)中的最后两个参数;可能有用吗?

0 个答案:

没有答案