В веб-приложении каждая задача выполняется в виде запроса и ответа.
Программирование на стороне клиента - это HTML-код с Java-скриптом и его фреймворками, библиотеки выполняются в Internet Explorer, Mozilla, Chrome-браузерах. В сценарии Java-сценария серверные сервлеты программирования выполняются в Tomcat, web-логике, j боссе, WebSphere severs
В зависимости от того, что вы делаете, system () или popen () может быть идеальным. Используйте system (), если сценарий Python не имеет выхода, или если вы хотите, чтобы выход скрипта Python переходил непосредственно в браузер. Используйте popen (), если вы хотите записать данные на стандартный ввод сценария Python или прочитать данные из стандартного вывода скрипта Python в php. popen () позволит вам читать или писать, но не то, и другое. Если вы хотите оба, проверьте proc_open () , но с двухсторонней связью между программами вы должны быть осторожны, чтобы избежать взаимоблокировок, где каждая программа ждет другого, чтобы что-то сделать.
Если вы хотите передать данные, предоставленные пользователем в сценарий Python, то большая вещь, о которой нужно быть осторожным, - это командная инъекция. Если вы не будете осторожны, ваш пользователь может отправить вам такие данные, как «; evilcommand»; и заставить вашу программу выполнять произвольные команды против вашей воли.
escapeshellarg () и escapeshellcmd () могут помочь с этим, но лично мне нравится удалять все, что не является известным хорошим характером, используя что-то вроде
preg_replace('/[^a-zA-Z0-9]/', '', $str)
Ваш call_python_file.php должен выглядеть так:
<?php
$item='Everything is awesome!!';
$tmp = exec("py.py $item");
echo $tmp;
?>
Выполняет скрипт python и выводит результат в браузер. Хотя в вашем скрипте python переменная (sys.argv [1:]) будет содержать все ваши аргументы. Чтобы отобразить argv как строку для везде, где ваш php вытягивается, поэтому, если вы хотите сделать текстовую область:
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
Я все время занимаюсь такими быстрыми и грязными сценариями. Обычно имеет сценарий CGI или PHP, который просто использует system / popen для вызова какой-либо внешней программы.
Просто будьте осторожны, если ваш веб-сервер открыт для Интернета в целом. В этом случае убедитесь, что вы дезактивируете свой вход GET / POST, чтобы не позволить злоумышленникам выполнять произвольные команды на вашем компьютере.
Существует также расширение 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
. И то же самое должно работать на разных машинах.
– darth_coder
17 June 2015 в 17:40
Оператор backquote также позволит вам запускать скрипты python с использованием аналогичного синтаксиса выше
. В файле python с именем python.py:
hello = "hello"
world = "world"
print hello + " " + world
В php-файле, называемом python.php:
$python = `python python.py`;
echo $python;
Если вы хотите выполнить свой скрипт Python в PHP, необходимо выполнить эту команду в вашем php-скрипте:
exec('your script python.py')