Ce face passthru
passthru seamănă cu system, dar trimite ieșirea exact cum vine, octet cu octet, fără să o împartă în linii. Este alegerea potrivită când comanda produce o imagine, un PDF sau o arhivă pe care vrei s-o trimiți direct vizitatorului.
Nu returnează ieșirea: la succes returnează null, iar la eșec false. Codul de ieșire vine în $result_code.
Parametri
| Parametru | Descriere |
|---|---|
$command |
Comanda rulată. |
$result_code |
Opțional. Variabilă în care se pune codul de ieșire. |
Ce returnează
null la succes sau false dacă comanda nu a putut fi pornită.
Exemple
Exemplul 1: Ieșirea trimisă direct
<?php
file_put_contents("preturi.csv", "produs,pret\npaine,5\nlapte,8\n");
$rezultat = passthru("cat preturi.csv", $cod);
var_dump($rezultat);
var_dump($cod);
Rezultat
produs,pret
paine,5
lapte,8
NULL
int(0)
Exemplul 2: O arhivă trimisă la descărcare
zip - scrie arhiva pe ieșirea standard, iar passthru o trimite browserului fără să o încarce în memorie.
<?php
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"facturi.zip\"");
passthru("zip -qr - facturi/2026");
Greșeli frecvente
- Verifici succesul cu
if (passthru(...)). La succes funcția returneazănull, care este fals. Verifică$result_code === 0. - Afișezi ceva înainte de
passthrucând trimiți un fișier binar. Textul în plus strică fișierul descărcat.
Comenzi înrudite
system: Rulează o comandă de sistem, afișează imediat tot ce scrie ea și returnează ultima linie.exec: Rulează o comandă a sistemului de operare și returnează ultima linie afișată de ea.readfile: Citește un fișier și îl trimite direct la ieșire (spre browser), fără să îl încarce în memorie.escapeshellarg: Pune un text între ghilimele sigure, ca să poată fi folosit ca argument într-o comandă de shell.