Forum und email
popen

popen

(PHP 3, PHP 4, PHP 5)

popen -- Otwiera wskaźnik pliku do procesu

Opis

resource popen ( string polecenie, string tryb )

Otwiera potok do procesu uruchomionego przez rozwidlenie polecenia (ang. forking) podanego w parametrze polecenie.

Zwraca wskaźnik pliku identyczny do tego zwracanego przez fopen() z wyjątkiem tego, że jest on jednokierunkowy (może być tylko użyty do odczytu lub zapisu) i musi być zamknięty za pomocą pclose(). Wskaźnik ten może być użyty z fgets(), fgetss() i fwrite().

W przypadku błędu, zwraca FALSE.

Notatka: Jeśli szukasz dwukierunkowej obsługi (w obie strony), użyj proc_open().

Przykład 1. popen() przykład

<?php
$uchwyt
= popen("/bin/ls", "r");
?>

Jeśli polecenie uruchamiane nie może zostać znalezione, poprawny zasób jest zwracany. To może wydawać się dziwne, ale ma sens; pozwala tobie na dostęp do wszystkich informacji o błędach zwracanych przez powłokę.

<?php
error_reporting
(E_ALL);

/* Dodanie przekierowania, aby móc dostać stderr. */
$uchwyt = popen('/sciezka/do/czegos 2>&1', 'r');
echo
"'$uchwyt'; " . gettype($uchwyt) . "\n";
$czytaj = fread($uchwyt, 2096);
echo
$czytaj;
pclose($uchwyt);
?>

Notatka: Jeśli tryb bezpieczny został włączony, możliwe jest wykonywanie programów tylko z katalogu określonego przez safe_mode_exec_dir. Ze względów praktycznych, nie można podawać elementów .. w ścieżce do pliku wykonywalnego.

Ostrzeżenie

Jeśli włączony jest tryb bezpieczny, ciągi zawierające polecenia są filtrowane przez funkcję escapeshellcmd(). W związku z tym, echo y | echo x staje się echo y \| echo x.

Patrz także pclose(), fopen() i proc_open().