Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • U kontaktu sa
  • Loše informacije php. Isporučite datoteke efikasno koristeći PHP

Loše informacije php. Isporučite datoteke efikasno koristeći PHP

Ova funkcija prikazuje tabelu koja sadrži mnogo korisnih informacija o php postavkama, instaliranim modulima, konfiguraciji lokalnog servera, varijablama okruženja, verziji OS-a, putanjama, HTTP zaglavljima, PHP licenci itd.

Funkcija phpinfo se koristi prilikom provjere sistema, jer svaki server na mreži ima svoje jedinstvene postavke. Ako je skripta dobro radila na jednom serveru i prestala raditi na drugom, onda je vrijedno provjeriti postavke konfiguracije novog servera pomoću ove funkcije.

Najlakši način za korištenje ove funkcije je kreiranje zasebne datoteke:

Prikazaće stranicu poput ove:

Slika 1. Funkcija phpinfo() radi.

A dole se nalaze još četiri ekrana sa informacijama.

phpinfo je funkcija koja prikazuje kompletne informacije o trenutnoj PHP konfiguraciji.

PHP phpinfo funkcija
Ime (konstantno)Značenje Opis
INFO_GENERAL 1 Opće informacije o konfiguraciji, php.ini lokacija, informacije o web serveru, sistemu itd.
INFO_CREDITI 2 Informacije o PHP programerima. Takođe se može dobiti pomoću funkcije phpcredits().
INFO_CONFIGURATION 4 Informacije o trenutnim vrijednostima glavnih i lokalnih PHP direktiva. Oni se također mogu dobiti pomoću funkcije ini_get().
INFO_MODULI 8 Učitani moduli i njihova podešavanja. Pogledajte također get_loaded_extensions() .
INFO_OKRUŽENJE 16 Informacije o varijablama okruženja, koje su također dostupne u $_ENV.
INFO_VARIABLES 32 Izlazi sve unapred definisane varijable iz EGPCS-a (okruženje, GET, POST, kolačić, server).
INFO_LICENSE 64 Informacije o PHP licenci.
INFO_ALL -1 Izlazi sve gore navedeno.

Možete vidjeti da phpinfo funkcija sadrži EGPCS podatke, tako da se može koristiti za otklanjanje grešaka.

Vrijednosti su bitne, tako da su korišteni brojevi 2, 4, 8, 16, 32 i 64.

Primjeri korištenja phpinfo() s argumentima:

Informacije koje pruža funkcija phpinfo() mogu koristiti napadači da naškode vašoj web lokaciji. Stoga se datoteke s ovom funkcijom moraju izbrisati.

2010. godine, poznati ruski izvor za programere, Habrahabr, objavio je članak koji je predstavio podatke iz vrlo zanimljive studije. Ispostavilo se da 4,69% ruskih sajtova sadrži datoteku phpinfo.php sa funkcijom phpinfo. U to vrijeme, RuNet se sastojao od 36.804 lokacije, 1.725 je imalo potencijalne ranjivosti.

Ako samo trebate saznati koja je verzija PHP-a na serveru, možete koristiti funkciju phpversion.

Svaki softver koji želite da pokrenete na svom web serveru ima određene zahtjeve koje mora ispuniti. Na primjer, WordPress zahtijeva PHP verziju 5.2.4 ili noviju. Ovisno o serveru, možete promijeniti neke PHP postavke, druge je, naprotiv, zabranjeno mijenjati, međutim, informacije o svim njima mogu se pronaći u phpinfo datoteci. U ovom vodiču ćete naučiti kako kreirati 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 što započnete ovaj vodič, trebat će vam sljedeće:

  • Pristup vašem hosting kontrolnom panelu ili FTP nalogu

Opcija 1 - Provjera PHP informacija putem kontrolne table vašeg hostinga

Na Hostingeru, PHP informacije o vašem nalogu mogu se naći u Napredno → Informacije o PHP-u. Ovo je veoma zgodna funkcija, jer nećete morati da kreirate dodatne fajlove na svom hostingu.

Nakon toga, bit ćete preusmjereni na stranicu sa svim potrebnim informacijama o vašoj PHP verziji, modulima i vrijednostima. Da biste tražili određeni modul ili funkciju, koristite pretragu pritiskom na prečicu na tastaturi CTRL+F.

Čestitamo! Naučili ste kako da pristupite svojim php informacijama preko Hostinger kontrolne table.

Opcija 2 - Provjera PHP informacija kreiranjem datoteke phpinfo.php

Ne brinite ako vaša hosting platforma ne podržava funkciju prikazanu u Opcija 1. Isti rezultat možete postići kreiranjem posebne datoteke unutar vašeg hosting naloga. Datoteka će takođe prikazati sve informacije o vašem PHP-u i biće joj dostupna preko pretraživača.

Korak 2.1 - Kreirajte phpinfo fajl

Postoji nekoliko načina za kreiranje phpinfo datoteke. U ovom vodiču ćemo koristiti . Međutim, isti rezultat se može postići kreiranjem datoteke na vašem lokalnom računalu, a zatim uploadom datoteke na server putem .

Prijavite se na kontrolnu tablu svog hostinga i otvorite File manager. Kliknite na dugme Novi fajl da kreirate novi fajl.

U prvom polju navedite putanju na kojoj će se kreirati novi fajl. Dalje, na terenu Novo ime datoteke enter phpinfo.php. U većini slučajeva možete ostaviti putanju nepromijenjenu /public_html. U tom slučaju, datoteka će biti kreirana u korijenskom direktoriju vaše stranice.

Korak 2.2 - Uređivanje datoteke

U ovoj fazi već imate prazan fajl phpinfo.php u katalogu public_html. Kopirajte sljedeći kod u datoteku i kliknite na ikonu Sačuvaj u lijevom uglu 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 rezultat se može postići korištenjem:

  1. Koristite bilo koji uređivač teksta i kreirajte datoteku phpinfo.php na vašem računaru.
  2. Dodajte sljedeći kod u datoteku:
  1. Prenesite datoteku koristeći FTP u svoj direktorij public_html.

Korak 2.3 - Provjera PHP informacija putem pretraživača

Ako je sve urađeno kako treba, sada možete pristupiti kreiranoj datoteci dodavanjem na kraj imena vaše domene /strhpinfo.php. npr. http://yourdomain.ru/phpinfo.php

Trebali biste vidjeti sličan rezultat kada otvorite ovu stranicu putem pretraživača:

Na ovoj stranici ćete moći vidjeti sve vaše PHP postavke.

Zaključak

Dovršavanjem ovog vodiča naučili ste kako da kreirate phpinfo fajl i proverite informacije o vašim PHP postavkama. Ove informacije su korisne ako želite da saznate svoje postavke hostinga ili da pokrenete softver koji zahteva određene PHP module.

(PHP 3, PHP 4, PHP 5)

phpinfo - prikazuje mnogo informacija o PHP-u.

Opis

int phpinfo()

Prikazuje veliku količinu informacija o trenutnom PHP statusu. Ovo uključuje informacije o opcijama i ekstenzijama PHP kompilacije, PHP verziji, serveru i informacijama o okruženju (ako je kompajlirano kao modul), PHP okruženju, verziji OS-a, stazama, varijablama opcija glavne i lokalne konfiguracije, HTTP i PHP zaglavlja licence. Pošto je svaki sistem drugačije konfigurisan, phpinfo() se obično koristi za proveru konfiguracionih postavki i dostupnosti unapred definisanih varijabli na datom sistemu. Phpinfo() je takođe važan uslužni program za otklanjanje grešaka, jer sadrži sve EGPCS podatke (okruženje, GET, POST, Cookie, Server). Izlaz se može specijalizirati prenošenjem jednog ili više od sljedećeg konstantan bitne vrijednosti sumirane u opcionom parametru what. Također možete kombinirati odgovarajuće konstantne ili bitne vrijednosti koristeći operaciju.

Tabela 1. phpinfo() opcije
Ime (konstanta) Vrijednost Opis INFO_GENERAL1 Konfiguracijski niz, php.ini lokacija, datum izgradnje, Web server, sistem, itd.INFO_CREDITS2PHP Krediti 4.Vidi. također phpcredits() .INFO_CONFIGURATION4Trenutne lokalne i glavne vrijednosti php direktiva.Vidi. takođe ini_get() .INFO_MODULES8 Učitani moduli i njihova odgovarajuća podešavanja.INFO_ENVIRONMENT16Okruženje Informacije o promenljivoj, takođe dostupne u $_ENV .INFO_VARIABLES32Prikazuje sve unapred definisane varijable iz EGPCS-a (okruženje, GET, POST server, informacije o kolačićima.Cookie.6cLIPPENSEPH, Cookie. također licenca faq .INFO_ALL-1Sve gore navedeno Ovo je zadana vrijednost.

Napomena: dijelovi prikazanih informacija su onemogućeni kada je postavka konfiguracije expose_php postavljena na isključeno. Ovo uključuje PHP i Zend logotipe i kredite. Također

Ako vam je potrebno da pošaljete datoteke ne direktno preko web servera, već koristeći PHP (na primjer, za prikupljanje statistike preuzimanja), pogledajte kat.

1. Koristite readfile()

Dobra stvar kod ove metode je to što radi izvan kutije. Vi samo trebate napisati svoju vlastitu funkciju slanja datoteka (malo izmijenjen primjer iz službene dokumentacije):

Funkcija file_force_download($file) ( if (file_exists($file)) ( // resetirajte PHP izlazni bafer kako biste izbjegli prelijevanje memorije dodijeljene skripti // ako se to ne uradi, datoteka će se u potpunosti pročitati u memoriju! ako (ob_get_level()) ( ob_end_clean(); ) // prisiljava pretraživač da prikaže prozor za spremanje zaglavlja datoteke ("Opis sadržaja: Prijenos datoteke"); header("Tip sadržaja: aplikacija/oktet-tok") ; header("Content-Disposition: attachment; filename =" . basename($file)); header("Content-Transfer-Encoding: binary"); header("Ističe: 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 i velike datoteke se mogu poslati na ovaj način, jer će PHP pročitati datoteku i odmah je dati korisniku u dijelovima. Dokumentacija jasno kaže da readfile() ne treba stvaraju probleme sa memorijom.

Posebnosti:

  • Datoteka se čita u interni bafer funkcije readfile(), čija je veličina 8kB (zahvaljujući 2fast4rabbit)

2. Pročitajte i pošaljite datoteku ručno

Metoda koristi isti Drupal kada šalje datoteke iz privatnog sistema datoteka (datoteke nisu direktno dostupne putem veza):

Funkcija file_force_download($file) ( if (file_exists($file)) ( // resetirajte PHP izlazni bafer kako biste izbjegli prelijevanje 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 pretraživač da prikaže prozor za spremanje zaglavlja datoteke ("Opis sadržaja: Prijenos datoteke"); header("Tip sadržaja: aplikacija/oktet-tok") ; header("Content-Disposition: attachment; filename =" . basename($file)); header("Content-Transfer-Encoding: binary"); header("Ističe: 0"); header("Cache- Control: must-revalidate"); header("Pragma: public"); header("Content-Length: " . filesize($file)); // pročitajte datoteku i pošaljite je korisniku ako ($fd = fopen ($file, "rb")) ( while (!feof($ fd)) ( print fread($fd, 1024); ) fclose($fd); ) izlaz; ) )
Posebnosti:

  • Skripta čeka dok se cijeli fajl ne pročita i preda korisniku.
  • Omogućava uštedu memorije servera

3. Koristite modul web servera

3a. Apache
Modul XSendFile vam omogućava da pošaljete datoteku samom Apache-u koristeći posebno zaglavlje. Postoje verzije za Unix i Windows, pod verzijama 2.0.*, 2.2.* i 2.4.*

U postavkama hosta morate omogućiti presretanje zaglavlja pomoću direktive:
XSendFile On
Također možete odrediti bijelu listu direktorija u kojima se datoteke mogu obraditi. Važno: ako imate server baziran na Windows-u, putanja mora uključivati ​​slovo pogona velikim slovima.

Opis mogućih opcija na web stranici programera: https://tn123.org/mod_xsendfile/

Primjer slanja fajla:

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 folderu direktno preko konfiguracijske datoteke:
lokacija /zaštićena/ (interna; korijen /neki/put;)
Primjer slanja datoteke (datoteka mora biti u /some/path/protected direktoriju):

Funkcija file_force_download($file) ( if (file_exists($file)) ( header("X-Accel-Redirect: " . $file); header("Content-Type: application/octet-stream"); ​​header( "Content -Disposition: attachment; filename=" . basename($file)); exit; ) )
Više informacija na stranici službene dokumentacije

Posebnosti:

  • Skripta se završava odmah nakon završetka svih instrukcija
  • Fizički, datoteku šalje sam modul web servera, a ne PHP
  • Minimalna potrošnja memorije i serverskih resursa
  • Maksimalne performanse

Ažuriranje: Habrowser ilyaplot daje dobar savjet da je bolje poslati ne application/octet-stream, već pravi mime tip datoteke. Na primjer, ovo će omogućiti pretraživaču da ubaci potrebne programe u dijalog za spremanje datoteka.

Najbolji članci na ovu temu