Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • U kontaktu s
  • Loša informacija php. Učinkovito isporučite datoteke pomoću PHP-a

Loša informacija php. Učinkovito isporučite datoteke pomoću PHP-a

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.

PHP funkcija phpinfo
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:

  1. Koristite bilo koji uređivač teksta i izradite datoteku phpinfo.php na vašem računalu.
  2. Dodajte sljedeći kod u datoteku:
  1. 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
Naziv (konstanta) Vrijednost Opis INFO_GENERAL1 Konfiguracijski niz, php.ini lokacija, datum izrade, web poslužitelj, sustav itd.INFO_CREDITS2PHP Zasluge 4. Vidi. također phpcredits() .INFO_CONFIGURATION4Trenutne lokalne i glavne vrijednosti php direktiva.Vidi. također ini_get() .INFO_MODULES8 Učitani moduli i njihove odgovarajuće postavke.INFO_ENVIRONMENT16Informacije o varijabli okruženja, također dostupne u $_ENV .INFO_VARIABLES32Prikazuje sve predefinirane varijable iz EGPCS (Okruženje, GET, POST, kolačić, poslužitelj).INFO_LICENSE64PHP informacije o licenci. Vidi. također licenca faq .INFO_ALL-1Sve od navedenog Ovo je zadana vrijednost.

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.

Najbolji članci na temu