Ova funkcija prikazuje tablicu koja sadrži puno korisnih informacija o php postavkama, instaliranim modulima, konfiguraciji lokalnog poslužitelja, varijablama okruženja, verziji OS-a, stazama, HTTP zaglavljima, PHP licenci itd.
Funkcija phpinfo koristi se prilikom provjere sustava, jer svaki poslužitelj na mreži ima svoje jedinstvene postavke. Ako je skripta dobro radila na jednom poslužitelju, a prestala raditi na drugom, vrijedi provjeriti konfiguracijske postavke novog poslužitelja pomoću ove funkcije.
Najlakši način korištenja ove funkcije je stvaranje zasebne datoteke:
Prikazat će stranicu poput ove:
Slika 1. Funkcija phpinfo() radi.
A dolje su još otprilike četiri zaslona s informacijama.
phpinfo je funkcija koja prikazuje potpune informacije o trenutnoj PHP konfiguraciji.
Ime (konstanta) | Značenje | Opis |
---|---|---|
INFO_OPĆE | 1 | Opće informacije o konfiguraciji, lokacija php.ini, informacije o web poslužitelju, sustavu itd. |
INFO_KREDITI | 2 | Informacije o PHP programerima. Također se može dobiti pomoću funkcije phpcredits(). |
INFO_KONFIGURACIJA | 4 | Informacije o trenutnim vrijednostima glavnih i lokalnih PHP direktiva. Također se mogu dobiti pomoću funkcije ini_get(). |
INFO_MODULI | 8 | Učitani moduli i njihove postavke. Vidi također get_loaded_extensions() . |
INFO_OKRUŽE | 16 | Informacije o varijablama okruženja, koje su također dostupne u $_ENV. |
INFO_VARIJABLE | 32 | Izlaz svih unaprijed definiranih varijabli iz EGPCS-a (Okruženje, GET, POST, Cookie, Server). |
INFO_LICENCA | 64 | Podaci o PHP licenci. |
INFO_SVE | -1 | Izvodi sve gore navedeno. |
Možete vidjeti da funkcija phpinfo sadrži EGPCS podatke, pa se može koristiti za otklanjanje pogrešaka.
Vrijednosti su bitovi, tako da su korišteni brojevi 2, 4, 8, 16, 32 i 64.
Primjeri korištenja phpinfo() s argumentima:
Napadači mogu upotrijebiti informacije koje pruža funkcija phpinfo() kako bi oštetili vašu stranicu. Stoga se datoteke s ovom funkcijom moraju izbrisati.
2010. godine poznati ruski resurs za programere Habrahabr objavio je članak u kojem su prikazani podaci vrlo zanimljive studije. Ispostavilo se da 4,69% ruskih stranica sadrži datoteku phpinfo.php s funkcijom phpinfo. U to vrijeme, RuNet se sastojao od 36.804 mjesta, 1.725 imalo je potencijalne ranjivosti.
Ako samo trebate saznati koja je verzija PHP-a na poslužitelju, možete koristiti funkciju phpversion.
Svaki softver koji želite pokrenuti na svom web poslužitelju ima određene zahtjeve koje mora ispuniti. Na primjer, WordPress zahtijeva PHP verziju 5.2.4 ili noviju. Ovisno o poslužitelju, možete promijeniti neke PHP postavke, druge je, naprotiv, zabranjeno mijenjati, međutim, informacije o svima njima mogu se pronaći u phpinfo datoteci. U ovom ćete vodiču naučiti kako stvoriti phpinfo datoteku i saznati vrijednosti i status PHP modula. Ovo također može biti korisno za dobivanje informacija o vašem hosting računu kao što su max_execution_time, memory_limit, post_max_size i drugi.
Prije nego počnete s ovim vodičem, trebat će vam sljedeće:
- Pristup kontrolnoj ploči vašeg hostinga ili FTP računu
Opcija 1 - Provjera podataka o PHP-u putem upravljačke ploče hostinga
U Hostingeru, PHP informacije vašeg računa mogu se pronaći u Napredno → PHP informacije. Ovo je vrlo zgodna značajka jer nećete morati stvarati dodatne datoteke na svom hostingu.
Nakon toga, bit ćete preusmjereni na stranicu sa svim potrebnim informacijama o vašoj PHP verziji, modulima i vrijednostima. Za traženje određenog modula ili funkcije koristite pretraživanje pritiskom na tipkovni prečac CTRL+F.
Čestitamo! Naučili ste kako pristupiti svojim php podacima putem upravljačke ploče Hostingera.
Opcija 2 - Provjera PHP informacija stvaranjem datoteke phpinfo.php
Ne brinite ako vaša hosting platforma ne podržava značajku prikazanu u opcija 1. Isti se rezultat može postići stvaranjem posebne datoteke unutar vašeg hosting računa. Datoteka će također prikazati sve informacije o vašem PHP-u i bit će dostupna putem preglednika.
Korak 2.1 - Stvorite phpinfo datoteku
Postoji nekoliko načina za stvaranje phpinfo datoteke. U ovom vodiču ćemo koristiti . Međutim, isti se rezultat može postići stvaranjem datoteke na vašem lokalnom računalu i zatim učitavanjem datoteke na poslužitelj putem .
Prijavite se na upravljačku ploču svog hostinga i otvorite Upravitelj datoteka. Pritisnite gumb Nova datoteka za stvaranje nove datoteke.
U prvom polju označite stazu na kojoj će se kreirati nova datoteka. Dalje, na terenu Novi naziv datoteke Unesi phpinfo.php. U većini slučajeva možete ostaviti stazu nepromijenjenu /javni_html. U tom će slučaju datoteka biti stvorena u korijenskom direktoriju vaše stranice.
Korak 2.2 - Uređivanje datoteke
U ovoj fazi već imate praznu datoteku phpinfo.php u katalogu javni_html. Kopirajte sljedeći kod u datoteku i kliknite ikonu Uštedjeti u lijevom kutu ekrana.
To je to, uspješno ste kreirali PHP datoteku koja će prikazati sve parametre vašeg PHP-a. Kao što je ranije spomenuto, isti se rezultat može postići korištenjem:
- Koristite bilo koji uređivač teksta i izradite datoteku phpinfo.php na vašem računalu.
- Dodajte sljedeći kod u datoteku:
- Prenesite datoteku pomoću FTP-a u svoj imenik javni_html.
Korak 2.3 - Provjera PHP informacija putem preglednika
Ako je sve napravljeno kako treba, sada možete pristupiti kreiranoj datoteci dodavanjem na kraj naziva vaše domene /strhpinfo.php. npr. http://vašadomena.ru/phpinfo.php
Trebali biste vidjeti sličan rezultat kada otvorite ovu stranicu putem preglednika:
Na ovoj stranici moći ćete vidjeti sve svoje PHP postavke.
Zaključak
Dovršetkom ovog vodiča naučili ste kako stvoriti phpinfo datoteku i provjeriti informacije o vašim PHP postavkama. Ove informacije su korisne ako želite znati svoje postavke hostinga ili pokrenuti softver koji zahtijeva određene PHP module.
(PHP 3, PHP 4, PHP 5)
phpinfo - prikazuje puno informacija o PHP-u.
Opis
int phpinfo()
Prikazuje veliku količinu informacija o trenutnom PHP statusu. To uključuje informacije o PHP kompilacijskim opcijama i proširenjima, PHP verziji, informacijama o poslužitelju i okruženju (ako je kompilirano kao modul), PHP okruženju, verziji OS-a, stazama, varijablama glavne i lokalne konfiguracijske opcije, HTTP i PHP zaglavlja licence. Budući da je svaki sustav drugačije konfiguriran, phpinfo() se obično koristi za provjeru konfiguracijskih postavki i dostupnosti unaprijed definiranih varijabli na određenom sustavu. Phpinfo() je također važan uslužni program za otklanjanje pogrešaka jer sadrži sve EGPCS podatke (okruženje, GET, POST, kolačić, poslužitelj). Izlaz se može specijalizirati prolaskom jednog ili više od sljedećeg konstantno bitne vrijednosti zbrojene u izbornom parametru what. Također možete kombinirati odgovarajuće konstante ili vrijednosti bita pomoću operacije.
Tablica 1. phpinfo() opcije
Napomena: dijelovi prikazanih informacija su onemogućeni kada je postavka konfiguracije expose_php isključena. Ovo uključuje PHP i Zend logotipe i zasluge. Pogledajte. Također
Ako niste trebali slati datoteke izravno putem web poslužitelja, već pomoću PHP-a (na primjer, za prikupljanje statistike preuzimanja), pogledajte cat.
1. Koristite readfile()
Dobra stvar u vezi s ovom metodom je to što radi izvan okvira. Vi samo trebate napisati vlastitu funkciju slanja datoteka (malo modificirani primjer iz službene dokumentacije):Funkcija file_force_download($file) ( if (file_exists($file)) ( // poništi PHP izlazni međuspremnik kako bi se izbjeglo prekoračenje memorije dodijeljene skripti // ako se to ne učini, datoteka će se u potpunosti pročitati u memoriju! ako (ob_get_level()) ( ob_end_clean(); ) // prisiljava preglednik da prikaže prozor za spremanje datoteke header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream") ; header("Content-Disposition: attachment; filename =" . basename($file)); header("Content-Transfer-Encoding: binary"); header("Expires: 0"); header("Cache- Control: must-revalidate"); header("Pragma: public"); header("Content-Length: " . filesize($file)); // pročitajte datoteku i pošaljite je korisniku readfile($file); Izlaz; ) )
Čak se i velike datoteke mogu poslati na ovaj način, budući da će PHP pročitati datoteku i odmah je dati korisniku u dijelovima. Dokumentacija jasno navodi da readfile() ne treba stvoriti probleme s pamćenjem.
Osobitosti:
- Datoteka se čita u interni međuspremnik funkcije readfile(), čija je veličina 8kB (zahvaljujući 2fast4rabbit)
2. Ručno pročitajte i pošaljite datoteku
Metoda koristi isti Drupal kada šalje datoteke iz privatnog datotečnog sustava (datoteke nisu izravno dostupne putem poveznica):Funkcija file_force_download($file) ( if (file_exists($file)) ( // poništi PHP izlazni međuspremnik kako bi se izbjeglo prekoračenje memorije dodijeljene skripti // ako se to ne učini, datoteka će se u potpunosti pročitati u memoriju! ako (ob_get_level()) ( ob_end_clean(); ) // prisiljava preglednik da prikaže prozor za spremanje datoteke header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream") ; header("Content-Disposition: attachment; filename =" . basename($file)); header("Content-Transfer-Encoding: binary"); header("Expires: 0"); header("Cache- Control: must-revalidate"); header("Pragma: public"); header("Content-Length: " . filesize($file)); // pročitajte datoteku i pošaljite je korisniku if ($fd = fopen ($file, "rb")) ( while (!feof($ fd)) ( ispis fread($fd, 1024); ) fclose($fd); ) izlaz; ) )
Osobitosti:
- Skripta čeka dok se cijela datoteka ne pročita i preda korisniku.
- Omogućuje uštedu memorije poslužitelja
3. Koristite modul web poslužitelja
3a. Apache
Modul XSendFile omogućuje slanje datoteke samom Apacheu pomoću posebnog zaglavlja. Postoje verzije za Unix i Windows, pod verzijama 2.0.*, 2.2.* i 2.4.*U postavkama hosta trebate omogućiti presretanje zaglavlja pomoću direktive:
XSendFile uključen
Također možete odrediti bijeli popis direktorija u kojima se datoteke mogu obrađivati. Važno: ako imate poslužitelj temeljen na sustavu Windows, put mora uključivati slovo pogona napisano velikim slovima.
Opis mogućih opcija na web stranici programera: https://tn123.org/mod_xsendfile/
Primjer slanja datoteke:
Funkcija file_force_download($file) ( if (file_exists($file)) ( header("X-SendFile: " . realpath($file)); header("Content-Type: application/octet-stream"); header (" Content-Disposition: attachment; filename=" . basename($file)); exit; ) )
3b. Nginx
Nginx može slati datoteke izvan kutije putem posebnog zaglavlja.Za ispravan rad morate zabraniti pristup mapi izravno putem konfiguracijske datoteke:
lokacija /zaštićena/ ( interni; korijen /neki/put; )
Primjer slanja datoteke (datoteka mora biti u direktoriju /some/path/protected):
Funkcija file_force_download($file) ( if (file_exists($file)) ( header("X-Accel-Redirect: " . $file); header("Content-Type: application/octet-stream"); header( "Sadržaj - Dispozicija: privitak; naziv datoteke=" . osnovno ime($datoteka)); izlaz; ) )
Više informacija na stranici službene dokumentacije
Osobitosti:
- Skripta završava odmah nakon što su sve upute dovršene
- Fizički, datoteku šalje sam modul web poslužitelja, a ne PHP
- Minimalna potrošnja memorije i resursa poslužitelja
- Maksimalna izvedba
Ažuriraj: Habrowser ilyaplot daje dobar savjet da je bolje slati ne application/octet-stream , već pravi mime tip datoteke. Na primjer, ovo će omogućiti pregledniku da umetne potrebne programe u dijaloški okvir za spremanje datoteke.