W zależności od tego, co robisz, system () lub popen () mogą być idealne. Użyj system (), jeśli skrypt w języku Python nie ma wyjścia lub jeśli chcesz, aby dane wyjściowe skryptu w języku Python były kierowane bezpośrednio do przeglądarki. Użyj popen (), jeśli chcesz zapisać dane na standardowe wejście skryptu Pythona lub odczytać dane ze standardowego wyjścia skryptu Python w php. popen () pozwoli ci tylko czytać i pisać, ale nie jedno i drugie. Jeśli chcesz mieć jedno i drugie, wypróbuj proc_open () , ale przy dwukierunkowej komunikacji między programami musisz uważać, aby uniknąć zakleszczeń, w których każdy program czeka, aż drugi coś zrobi.
Jeśli chcesz przekazać dane dostarczone przez użytkownika do skryptu Pythona, najważniejszą rzeczą, na którą należy uważać, jest wstrzyknięcie poleceń. Jeśli nie jesteś ostrożny, twój użytkownik może wysłać ci dane takie jak "; evilcommand;" i spraw, aby twój program wykonywał dowolne polecenia wbrew twojej woli.
escapeshellarg () i escapeshellcmd () mogą w tym pomóc, ale osobiście lubię usuwać wszystko, co nie jest znaną dobrą postacią, używając czegoś takiego jak
preg_replace('/[^a-zA-Z0-9]/', '', $str)