Передача переменных с дополнительными параметрами из PHP в Python - PullRequest
2 голосов
/ 11 апреля 2019

Мне нужно передать аргумент из нескольких слов из 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");

Все три приводят к пустой странице - нет ответа и не возвращается ошибка.

1 Ответ

0 голосов
/ 11 апреля 2019

Вы делаете правильные вещи, убегая, но использование escapeshellcmd не то, что вам нужно.У него нет понятия аргументов, поэтому он работает не так, как вы ожидаете.PHP предоставляет метод для кавычек и экранирования отдельных аргументов для команд оболочки:

<?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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...