2012-05-31 11 views
59

Jest możliwe, aby uruchomić polecenie zewnętrzne trzech funkcjach PHPJakie są różnice systemowe(), exec() i shell_exec() w PHP?

system(); 
exec(); 
shell_exec(); 

ale jakie są między nimi różnice? Pomimo ich konkretnych zastosowań, w większości przypadków można je w równym stopniu wykorzystywać. Jestem ciekawa, który z nich jest preferowany, gdy można go w równym stopniu wykorzystywać. Na przykład, aby rozpakować plik lub skompresować folder (za pomocą polecenia tar), który z nich jest preferowany (prawdopodobnie z punktu widzenia wydajności)?

UPDATE: W innym pytaniu, znalazłem bardzo przydatny link opisujący różne aspekty tych funkcji. Udostępniam link tutaj, ponieważ inni mogą go użyć, aby lepiej zrozumieć kwestie bezpieczeństwa i inne aspekty.

+5

Nie być oschły, ale co miał powiedzieć o instrukcji odpowiednich funkcji? – GordonM

+2

Również zapomniałeś passthru() :) – GordonM

+0

@GordonM Przeczytałem instrukcję, ale nie rozumiem preferencji dla każdej funkcji. W wielu przypadkach można je w równym stopniu wykorzystywać. Chcę praktycznego poglądu. – Googlebot

Odpowiedz

85

exec - Wykonuje zewnętrzny program

system - Wykonanie zewnętrznego programu i wyświetla wyjście

shell_exec - wykonanie polecenia przez powłokę i przywrócić pełną moc jako ciąg

więc jeśli nie Potrzebuję wyjścia, pójdę z exec.

Dalsze szczegóły:

+1

Świetna odpowiedź koleś. –

+6

'exec()' zwraca ostatnią linię danych wyjściowych, więc jeśli wywołujesz prosty program, który po prostu wypisuje jedną wartość, jak 'whoami' lub' pwd', 'exec()' jest doskonały. – alanaktion

Powiązane problemy