В зависимости от того, что вы делаете, system () или popen () могут быть идеальными. Используйте system (), если скрипт Python не имеет выходных данных или если вы хотите, чтобы выходные данные скрипта Python направлялись непосредственно в браузер. Используйте popen (), если вы хотите записать данные в стандартный ввод скрипта Python или прочитать данные из стандартного вывода скрипта Python в php. popen () позволит вам читать или писать, но не то и другое одновременно. Если вы хотите и того, и другого, попробуйте proc_open () , но при двустороннем взаимодействии между программами вам нужно быть осторожным, чтобы избежать взаимоблокировок, когда каждая программа ждет, пока другая что-то сделает.
Если вы хотите передать данные, предоставленные пользователем, в скрипт Python, тогда следует быть осторожным с внедрением команд. Если вы не будете осторожны, ваш пользователь может отправить вам такие данные, как "; evilcommand;" и заставить вашу программу выполнять произвольные команды против вашей воли.
escapeshellarg () и escapeshellcmd () могут помочь в этом, но лично мне нравится удалять все, что не является заведомо хорошим персонажем, используя что-то вроде
preg_replace('/[^a-zA-Z0-9]/', '', $str)
Оператор обратной кавычки также позволит вам запускать скрипты Python, используя синтаксис, аналогичный приведенному выше.
В файле Python с именем python.py:
hello = "hello" world = "world" print hello + " " + world
В файле php с именем python.php:
$python = `python python.py`; echo $python;
источник
Также есть расширение PHP: Pip - Python в PHP , которое я никогда не пробовал, но пометил его как раз для такого случая.
источник
Вы можете запустить скрипт Python через php и выводить его в браузере.
По сути, вам нужно вызвать скрипт python следующим образом:
$command = "python /path/to/python_script.py 2>&1"; $pid = popen( $command,"r"); while( !feof( $pid ) ) { echo fread($pid, 256); flush(); ob_flush(); usleep(100000); } pclose($pid);
Примечание: если вы запустите any time.sleep () в своем коде Python, он не выдаст результаты в браузере.
Для работы с полными кодами посетите страницу Как выполнить скрипт python из php и показать вывод в браузере
источник
tempmon
и в той же папке находится мой сценарий python. Я хочу, чтобы приложение было переносимым, поэтому можно просто скопироватьtempmon
папку подhtdocs
. И то же самое должно работать на разных машинах.Я все время делаю такие вещи для быстрых и грязных сценариев. Довольно часто бывает сценарий CGI или PHP, который просто использует system / popen для вызова какой-либо внешней программы.
Просто будьте особенно осторожны, если ваш веб-сервер открыт для Интернета в целом. Не забудьте в этом случае продезинфицировать ввод GET / POST, чтобы злоумышленники не могли запускать произвольные команды на вашем компьютере.
источник
Ваш call_python_file.php должен выглядеть так:
<?php $item='Everything is awesome!!'; $tmp = exec("py.py $item"); echo $tmp; ?>
Это запускает скрипт python и выводит результат в браузер. В вашем скрипте python переменная (sys.argv [1:]) внесет все ваши аргументы. Чтобы отобразить argv в виде строки, где бы вы ни находились, если вы хотите создать текстовую область:
import sys list1 = ' '.join(sys.argv[1:]) def main(): print list1 if __name__ == '__main__': main()
источник
Обратите внимание, что если вы используете виртуальную среду (как на виртуальном хостинге), вы должны настроить свой путь к python, например:
/home/user/mypython/bin/python ./cgi-bin/test.py
источник
Вышеупомянутые методы кажутся сложными. Используйте мой метод как ссылку.
У меня есть два файла
Здесь я создал html-страницу, содержащую кнопку GO. Каждый раз, когда вы нажимаете эту кнопку, в каталоге, путь к которому вы указали, будет создана новая папка.
<html> <body> <head> <title> run </title> </head> <form method="post"> <input type="submit" value="GO" name="GO"> </form> </body> </html> <?php if(isset($_POST['GO'])) { shell_exec("python /var/www/html/lab/mkdir.py"); echo"success"; } ?>
#!/usr/bin/env python import os os.makedirs("thisfolder");
источник
Если вы хотите выполнить свой скрипт Python на PHP, необходимо выполнить эту команду в своем скрипте php:
exec('your script python.py')
источник
your
с параметрамиscript
иpython.py
. б) Если скрипт Python не имеет надлежащего shebang, необходимо вызвать интерпретатор Python и передать ему имя скрипта (python script.py
). Даже с правильным shebang это неверно, поскольку вы тогда вызываете./script.py
вместо использования имени интерпретатора.