Вот мой код, который должен работать согласно ответам на другие подобные вопросы, но это не так.
PHP:
<?PHP
$par = $_POST["parameter"];
$importPar=exec("py pyData.py . $par"); //also tried shell_exec()
print ($par);
print($importPar);
?>
Python:
import sys
who = sys.argv[1]
print("This is php var: ",who)
Возможно, мне придется что-то делать с моим cmd, потому что ничего не возвращается, даже когда я пытаюсь:
$test=shell_exec('ipconfig');
echo $test;
С небольшими изменениями ваш код работает нормально на моей установке PHP 5.6.3. Единственное существенное отличие в моем примере ниже заключается в том, что $par
устанавливается локально, а не из $POST
вход.
Незначительные исправления:
1. .
не обязательно, когда вы включаете $variable
внутри двойных кавычек. Это на самом деле заставит питона думать, что вы хотите напечатать .
вместо $par
, как .
читается как sys.argv[1]
,
2. Я предполагаю py
это псевдоним, но мне нужно было использовать python
в exec()
бежать правильно.
3. В качестве вывода на печать вы получите кортеж с выражением Python как есть: ('This is php var: ', 'foo')
, Рассмотреть возможность использования
.format()
вместо этого смотрите ниже.
""" test.py
import sys
who = sys.argv[1]
print('This is php var: {}'.format(who))
"""
<?PHP
$par = "foo";
$importPar=exec("python test.py $par");
print ("$par\n");
print($importPar);
?>
Выход:
foo
This is php var: test.py
Process finished with exit code 0
Других решений пока нет …