Cum se configurează smartphone-uri și PC-uri. Portal informativ

Informații proaste php. Livrați fișiere eficient folosind PHP

Această funcție afișează un tabel care conține o mulțime de informații utile despre setările php, modulele instalate, configurația serverului local, variabilele de mediu, versiunea sistemului de operare, căile, anteturile HTTP, licența PHP etc.

Funcția phpinfo este utilizată la verificarea sistemului, deoarece fiecare server din rețea are propriile setări unice. Dacă scriptul a funcționat bine pe un server și a încetat să funcționeze pe altul, atunci merită să verificați setările de configurare ale noului server folosind această funcție.

Cel mai simplu mod de a utiliza această funcție este de a crea un fișier separat:

Va afișa o pagină ca aceasta:

Figura 1. Funcția phpinfo() funcționează.

Și mai sunt vreo patru ecrane de informații acolo jos.

phpinfo este o funcție care afișează informații complete despre configurația PHP curentă.

Funcția PHP phpinfo
Nume (constante)Sens Descriere
INFO_GENERAL 1 Informații generale de configurare, locația php.ini, informații despre serverul Web, sistem etc.
INFO_CREDITE 2 Informații despre dezvoltatorii PHP. Poate fi obținut și folosind funcția phpcredits().
INFO_CONFIGURATION 4 Informații despre valorile actuale ale directivelor PHP principale și locale. Ele pot fi, de asemenea, obținute folosind funcția ini_get().
INFO_MODULES 8 Modulele încărcate și setările acestora. Vezi și get_loaded_extensions() .
INFO_MEDIUL 16 Informații despre variabilele de mediu, care sunt disponibile și în $_ENV .
INFO_VARIABLES 32 Emite toate variabilele predefinite din EGPCS (Mediu, GET, POST, Cookie, Server).
INFO_LICENSE 64 Informații despre licența PHP.
INFO_ALL -1 Emite toate cele de mai sus.

Puteți vedea că funcția phpinfo conține date EGPCS, deci poate fi folosită pentru depanare.

Valorile sunt pe bit, deci numerele folosite sunt 2, 4, 8, 16, 32 și 64.

Exemple de utilizare a phpinfo() cu argumente:

Informațiile furnizate de funcția phpinfo() pot fi folosite de atacatori pentru a vă deteriora site-ul. Prin urmare, fișierele cu această funcție trebuie șterse.

În 2010, cunoscuta resursă rusă pentru programatori, Habrahabr, a publicat un articol care prezenta date dintr-un studiu foarte interesant. S-a dovedit că 4,69% dintre site-urile rusești conțin un fișier phpinfo.php cu funcția phpinfo. La acel moment, RuNet consta din 36.804 de site-uri, 1.725 aveau vulnerabilități potențiale.

Dacă trebuie doar să aflați ce versiune de PHP este pe server, puteți utiliza funcția phpversion.

Orice software pe care doriți să-l rulați pe serverul dvs. web are anumite cerințe pe care trebuie să le îndeplinească. De exemplu, WordPress necesită versiunea PHP 5.2.4 sau mai mare. În funcție de server, puteți modifica unele setări PHP, altele, dimpotrivă, au interzisă modificarea, totuși informații despre toate acestea pot fi găsite în fișierul phpinfo. În acest tutorial, veți învăța cum să creați un fișier phpinfo și să aflați valorile și starea modulelor PHP. Acest lucru poate fi util și pentru a obține informații despre contul dvs. de găzduire, cum ar fi max_execution_time, memory_limit, post_max_size și altele.

Înainte de a începe acest ghid, veți avea nevoie de următoarele:

  • Acces la panoul de control al găzduirii sau la contul FTP

Opțiunea 1 - Verificarea informațiilor PHP prin panoul de control al găzduirii

La Hostinger, informațiile PHP ale contului dvs. pot fi găsite în Avansat → Informații PHP. Aceasta este o caracteristică foarte convenabilă, deoarece nu va trebui să creați fișiere suplimentare pe găzduirea dvs.

După aceasta, veți fi dus la o pagină cu toate informațiile necesare despre versiunea, modulele și valorile dvs. PHP. Pentru a căuta un anumit modul sau funcție, utilizați căutarea apăsând comanda rapidă de la tastatură CTRL+F.

Felicitări! Ați învățat cum să vă accesați informațiile php prin panoul de control Hostinger.

Opțiunea 2 - Verificarea informațiilor PHP prin crearea unui fișier phpinfo.php

Nu vă faceți griji dacă platforma dvs. de găzduire nu acceptă caracteristica afișată în Opțiunea 1. Același rezultat poate fi obținut prin crearea unui fișier special în contul dvs. de găzduire. Fișierul va afișa, de asemenea, toate informațiile despre PHP-ul dvs. și va fi accesibil prin browser.

Pasul 2.1 - Creați un fișier phpinfo

Există mai multe moduri de a crea un fișier phpinfo. În acest tutorial vom folosi . Cu toate acestea, același rezultat poate fi obținut prin crearea fișierului pe computerul local și apoi încărcarea fișierului pe server prin .

Conectați-vă la panoul de control al găzduirii și deschideți Manager de fișiere. Faceți clic pe butonul Fișier nou pentru a crea un nou fișier.

În primul câmp, indicați calea în care va fi creat noul fișier. În continuare, în câmp Nume nou de fișier introduce phpinfo.php. În cele mai multe cazuri, puteți lăsa calea neschimbată /public_html. În acest caz, fișierul va fi creat în directorul rădăcină al site-ului dvs.

Pasul 2.2 - Editarea fișierului

În această etapă aveți deja un fișier gol phpinfo.phpîn catalog public_html. Copiați următorul cod într-un fișier și faceți clic pe pictogramă Salvațiîn colțul din stânga ecranului.

Gata, ai creat cu succes un fișier PHP care va afișa toți parametrii PHP-ului tău. După cum am menționat mai devreme, același rezultat poate fi obținut folosind:

  1. Utilizați orice editor de text și creați un fișier phpinfo.php pe calculatorul tau.
  2. Adăugați următorul cod la fișier:
  1. Încărcați fișierul folosind FTP în directorul dvs public_html.

Pasul 2.3 - Verificarea informațiilor PHP prin browser

Dacă totul a fost făcut corect, acum poți accesa fișierul creat adăugând la sfârșitul numelui tău de domeniu /phpinfo.php. De exemplu, http://yourdomain.ru/phpinfo.php

Ar trebui să vedeți un rezultat similar când deschideți această pagină printr-un browser:

Pe această pagină veți putea vedea toate setările dvs. PHP.

Concluzie

Prin finalizarea acestui tutorial, ați învățat cum să creați un fișier phpinfo și să verificați informații despre setările dvs. PHP. Aceste informații sunt utile dacă doriți să cunoașteți setările dvs. de găzduire sau să rulați software care necesită anumite module PHP.

(PHP 3, PHP 4, PHP 5)

phpinfo - afișează o mulțime de informații despre PHP.

Descriere

int phpinfo()

Afișează o cantitate mare de informații despre starea PHP curentă. Acestea includ informații despre opțiunile și extensiile de compilare PHP, versiunea PHP, informații despre server și mediu (dacă sunt compilate ca modul), mediul PHP, versiunea sistemului de operare, căi, variabilele opțiunilor de configurare master și locală, antetele licenței HTTP și PHP. Deoarece fiecare sistem este configurat diferit, phpinfo() este de obicei folosit pentru a verifica setările de configurare și disponibilitatea variabilelor predefinite pe un sistem dat.Phpinfo() este, de asemenea, un utilitar de depanare important, deoarece conține toate datele EGPCS (Mediu, GET, POST, Cookie, Server). Ieșirea poate fi specializată trecând unul sau mai multe dintre următoarele constant valorile biților însumate în parametrul opțional what. De asemenea, puteți combina valorile constante sau biți corespunzătoare utilizând operația.

Tabelul 1. Opțiuni phpinfo().
Nume (constant) Valoare Descriere INFO_GENERAL1 Șir de configurare, locația php.ini, data construirii, server web, sistem etc.INFO_CREDITS2PHP Credite 4.Vezi. de asemenea phpcredits() .INFO_CONFIGURATION4Valorile actuale locale și principale ale directivelor php. Vezi. de asemenea ini_get() .INFO_MODULES8 Modulele încărcate și setările corespunzătoare ale acestora.INFO_ENVIRONMENT16Informații despre variabile de mediu, disponibile și în $_ENV .INFO_VARIABLES32Afișează toate variabilele predefinite din EGPCS (Mediu, GET, POST, Cookie, Server informații).INFOPH_LICENSE64.INFO_LICENSE. de asemenea, licență faq .INFO_ALL-1Toate cele de mai sus. Aceasta este valoarea implicită.

Notă: părți din informațiile afișate sunt dezactivate când setarea de configurare expose_php este setată la off . Aceasta include siglele și creditele PHP și Zend. Vezi. De asemenea

Dacă trebuia să trimiteți fișiere nu direct de către serverul web, ci folosind PHP (de exemplu, pentru a colecta statistici de descărcare), vă rugăm să consultați cat.

1. Folosiți readfile()

Lucrul bun despre această metodă este că funcționează din cutie. Trebuie doar să scrieți propria funcție de trimitere a fișierelor (exemplu ușor modificat din documentația oficială):

Funcția file_force_download($fișier) ( if (fișier_există($fișier)) ( // resetați tamponul de ieșire PHP pentru a evita depășirea memoriei alocate pentru script // dacă acest lucru nu se face, fișierul va fi citit în memorie complet! dacă (ob_get_level()) ( ob_end_clean(); ) // forțează browserul să arate fereastra pentru salvarea antetului fișierului ("Descrierea conținutului: Transfer de fișiere"); header ("Tipul conținutului: aplicație/octet-stream") ; ​​header("Conținut-Dispoziție: atașament; nume fișier =" .basename($fișier)); header("Transfer-conținut-Codificare: binar"); header("Expiră: 0"); antet("Cache- Control: trebuie revalidat"); header("Pragma: public"); header ("Lungimea conținutului: " .filesize($fișier)); // citește fișierul și îl trimite utilizatorului readfile($fișier); Ieșire; ) )
Chiar și fișierele mari pot fi trimise în acest fel, deoarece PHP va citi fișierul și îl va oferi imediat utilizatorului în părți. Documentația afirmă clar că readfile() nu ar trebui creează probleme de memorie.

Particularitati:

  • Fișierul este citit în bufferul intern al funcției readfile(), a cărei dimensiune este de 8 kB (mulțumită lui 2fast4rabbit)

2. Citiți și trimiteți fișierul manual

Metoda folosește același Drupal atunci când trimite fișiere dintr-un sistem de fișiere privat (fișierele nu sunt direct accesibile prin link-uri):

Funcția file_force_download($fișier) ( if (fișier_există($fișier)) ( // resetați tamponul de ieșire PHP pentru a evita depășirea memoriei alocate pentru script // dacă acest lucru nu se face, fișierul va fi citit în memorie complet! dacă (ob_get_level()) ( ob_end_clean(); ) // forțează browserul să arate fereastra pentru salvarea antetului fișierului ("Descrierea conținutului: Transfer de fișiere"); header ("Tipul conținutului: aplicație/octet-stream") ; ​​header("Conținut-Dispoziție: atașament; nume fișier =" .basename($fișier)); header("Transfer-conținut-Codificare: binar"); header("Expiră: 0"); antet("Cache- Control: trebuie revalidat"); header("Pragma: public"); header ("Lungimea conținutului: " .filesize($fișier)); // citește fișierul și îl trimite utilizatorului dacă ($fd = fopen ($fișier, "rb")) ( în timp ce (!feof($ fd)) ( print fread($fd, 1024); ) fclose($fd); ) exit; ) )
Particularitati:

  • Scriptul așteaptă până când întregul fișier este citit și dat utilizatorului.
  • Vă permite să economisiți memoria serverului

3. Utilizați modulul server web

3a. Apache
Modulul XSendFile vă permite să trimiteți un fișier către Apache folosind un antet special. Există versiuni pentru Unix și Windows, sub versiunile 2.0.*, 2.2.* și 2.4.*

În setările gazdei, trebuie să activați interceptarea antetului utilizând directiva:
XSendFile activat
De asemenea, puteți specifica o listă albă de directoare în care fișierele pot fi procesate. Important: dacă aveți un server bazat pe Windows, calea trebuie să includă litera unității în majuscule.

Descrierea opțiunilor posibile pe site-ul dezvoltatorului: https://tn123.org/mod_xsendfile/

Exemplu de trimitere a unui fișier:

Funcția file_force_download($fișier) ( if (fișier_există($fișier)) ( header("X-SendFile: " . realpath($fișier)); header("Content-Type: application/octet-stream"); ​​​​header ("Conținut-Dispoziție: atașament; nume fișier=" . numede bază($fișier)); ieșire; ) )

3b. Nginx
Nginx poate trimite fișiere din cutie printr-un antet special.

Pentru o funcționare corectă, trebuie să interziceți accesul la folder direct prin fișierul de configurare:
locație /protejat/ (internă; rădăcină /unele/cale; )
Exemplu de trimitere a unui fișier (fișierul trebuie să fie în directorul /some/path/protected):

Funcția file_force_download($fișier) ( dacă (fișier_există($fișier)) ( header("X-Accel-Redirect: " . $fișier); header ("Content-Type: application/octet-stream"); ​​​​header( „Conținut -Dispoziție: atașament; nume fișier=" .numede bază($fișier)); ieșire; ) )
Mai multe informații pe pagina de documentație oficială

Particularitati:

  • Scriptul se termină imediat după ce toate instrucțiunile sunt finalizate
  • Din punct de vedere fizic, fișierul este trimis de către modulul serverului web în sine, și nu de PHP
  • Consum minim de memorie și resurse de server
  • Performanță maximă

Actualizați: Habrowser ilyaplot oferă un sfat bun că este mai bine să trimiteți nu aplicația/octet-stream, ci tipul mime real al fișierului. De exemplu, acest lucru va permite browserului să insereze programele necesare în dialogul de salvare a fișierelor.

Cele mai bune articole pe această temă