Variabile de mediu si erori

1. Obtinerea si utilizarea datelor de la o variabila de mediu

Variabilele de mediu sunt folosite pentru stocarea optiunilor si a parametrilor care personalizeaza mediul de aplicatie. Aplicatiile pot obtine accesul la valorile variabilelor de mediu si in functie de acestea îsi pot ajusta comportamentul.
De exemplu, calea de cautare a programelor MS-DOS este stocata într-o variabila de mediu denumita PATH. In general, comenzile sistemelor de operare sunt folosite pentru a configura variabilele de mediu si pentru a stabili valorile acestora. Cu toate acestea, unele aplicatii manipuleaza valorile variabilelor de mediu.
Atât serverul Web Apache, cât si serverul de aplicatie PHP folosesc variabile de mediu pentru a prezenta informatii de stare. Unele dintre cele mai importante variabile de mediu folosite de Apache si PHP sunt rezumate în tabelul de mai jos. Numeroase servere Web, altele decât Apache, furnizeaza o parte din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflecta caracteristicile cererii HTTP care a solicitat executia PHP. Puteti vizualiza toate variabilele de mediu disponibile pentru programele PHP prin invocarea functiei phpinfo() si vizualizarea datelor de iesire generate de aceasta.
Vizualizarea datelor unei variabile de mediu se poate face folosind variabila $_SERVER si o cheie (intre paranteze patrate) ce repreinta numele variabilei de mediu.


Variabila de mediu Descriere
CONTENT_LENGTH - Lungimea, în octeti, a corpului cererii.
CONTENT_TYPE - Tipul MIME al datelor din corpul cererii.
DOCUMENT_ROOT - Calea care constituie radacina arborelui catalogului cu documente al serverului Web.
GATEWAY_INTERFACE - Returneaza ersiunea protocolului CGI (Common Gateway Interface) folosit de serverul Web.
HTTP_ACCEPT - Continutul antetului HTTP Accept.
HTTP_ACCEPT_CHARSET - Continutul antetului HTTP Accept-Charset:, care specifica seturile de caractere întelese de client.
HTTP_ACCEPT_ENCODING - Continutul antetului HTTP Accept-Encoding:, care specifica tipurile de continuturi întelese de client.
HTTP_ACCEPT_LANGUAGE - Continutul antetului HTTP Accept-Language:, care specifica limbajele preferate de client.
HTTP_CONNECTION - Continutul antetului HTTP Connection:, care indica optiunile solicitate de client.
HTTP_HOST - Continutul antetului HTTP Host:, care indica numele de gazda, folosit de client la prezentarea cererii.
HTTP_REFERER - Adresa URL a paginii Web care a trimis clientul la pagina curenta.
HTTP_USER_AGENT - Continutul antetului HTTP user-Agent, care indica tipul si versiunea browser-ului folosit.
PATH - Calea de executie asociata cu mediul serverului.
QUERY_STRING - Sirul de interogare, daca exista, prin care a fost accesata pagina.
REMOTE_ADDR - Adresa IP a clientului (vizitatorului).
REMOTE_HOST - Numele de gazda al clientului.
REMOTE_PORT - Adresa portului clientului de unde a pornit cererea.
REQUEST_METHOD - Metoda de cerere HTTP folosita; de exemplu, GET, POST, PUT sau HEAD.
REQUEST_URI - URI folosit pentru accesul la pagina curenta. URI este alcatuit dintr-un URL si un sir optional de interogare.
SCRIPT_FILENAME - Numele de cale absolut al scriptului curent.
SCRIPT_NAME - Adresa URL a scriptului curent.
SERVER_ADMIN - Adresa de e-mail a administratorului serverului Web.
SERVER_HOST - Numele de gazda asociat serverului Web care prelucreaza cererea.
SERVER_PORT - Portul folosit de serverul Web pentru comunicatii.
SERVER_PROTOCOL - Numele si versiunea protocolului prin intermediul caruia s-a executat cererea.
SERVER_SIGNATURE - Sirul care identifica versiunea serverului Web si numele de gazda folosit pentru prelucrarea cererii.
SERVER_SOFTWARE - Sirul care identifica programul server Web si versiunea acestuia.

- O lista completa a acestor variabile de mediu o gasiti la pagina oficiala $_SERVER

Puteti obtine accesul la variabila de mediu folosind variabila $_SERVER care este de fapt un Array in care cheile elementelor sunt numele variabilelor de mediu
De exemplu, urmatoarea instructiune echo trimite browserului adresa IP a clientului (vizitatorului):

<?php
$ip = $_SERVER['REMOTE_ADDR'];
echo "Adresa dv. IP este $ip";
?>

Afisarea sau nu a acestor variabile globale depinde de permisiunile facute la configurarea serverului PHP si de datele transmise.

2. Depanarea unui script

Uneori, în locul datelor de iesire ale scriptului dumneavoastra, puteti vedea unul din urmatoarele:

La vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar daca scriptul în sine este corect.
- Daca vedeti textul scriptului dumneavoastra sau o caseta de dialog prin care sunteti întrebat daca doriti sa descarcati fisierul care contine scriptul, este posibil ca extensia fisierului script sa fie incorecta sau ca serverul PHP sa nu functioneze. Desi fisierele script PHP trebuie sa aiba, în general, extensia .php, este posibil (dar mai rar) ca un administrator de sistem sa configureze un server PHP astfel încât acesta sa impuna o alta extensie de fisier. Astfel, daca scriptul dumneavoastra esueaza din unul dintre aceste doua motive, luati legatura cu administratorul dumneavoastra de sistem.
- Daca vedeti un mesaj în care se spune ca scriptul nu exista, este posibil ca dumneavoastra sa fi tastat incorect adresa URL. Verificati daca ati tastat corect adresa URL identificata de administratorul dumneavoastra de sistem, precum si daca ati atasat corect la aceasta numele fisierului care contine scriptul, folosind un slash numai daca adresa URL identificata de administratorul dumneavoastra de sistem nu se încheie cu acest caracter.
- Daca vedeti un mesaj în care se arata ca browserul dumneavoastra Web nu are permisiunea de a obtine accesul la script, poate ca este necesar sa modificati permisiunile fisierului script. Pentru a afla cum trebuie procedat, consultati-va cu administratorul de sistem.
- Daca vedeti un mesaj în care se spune ca scriptul dumneavoastra contine o eroare, verificati daca nu a aparut vreuna din urmatoarele probleme:

De exemplu, iata un script care contine un tip de eroare frecvent întâlnit. Puteti identifica eroarea?
<?php
// Acest script contine o eroare de sintaxa
echo "Salut, World Wide Web!;
?>

Din script lipseste caracterul ghilimele duble de închidere, care trebuie sa delimiteze expresia de tip text. Daca încercati sa executati acest script, puteti vedea doar o pagina goala sau o eroare similara celei prezentate în continuare.

Parse error. Parse error in /home/bmccarty/public_html/php/module-01/syntax-error.php On line 7

Mesajul de eroare încearca sa va indice sursa erorii, indicând numarul liniei la care s-a produs eroarea. Totusi, remarcati ca mesajul va îndruma spre linia 7 a unui script care contine numai 4 linii. Din moment ce ghilimelele duble de închidere lipsesc, serverul PHP cauta dincolo de sfârsitul scriptului pentru a gasi ghilimelele duble respective. Ca atare, serverul PHP este oarecum derutat cu privire la sursa erorii.
Morala este aceea ca nu puteti conta în totalitate pe serverul PHP pentru a determina locatia erorii; folositi numarul de linie furnizat de server numai ca îndrumar pentru a depista locatia probabila a erorii.

3. Tratarea erorilor

Modulul PHP poate fi configurat astfel incat sa afiseze erorile intilnite in codul PHP. Acest lucru poate fi foarte util in cazul depanarii programelor. Pentru a activa afisarea erorilor exista doua metode:

In cazul primei metode trebuie sa avem drepturi de administrator pentru a modifica fisierul php.ini. Nu se recomanda setarea parametrului display_errors la valoarea 1(TRUE) in cazul site-urilor de productie; mesajele de eroare afisate nu sint folositoare utilizatorului. Pe de alta parte aceasta ar contribui la marirea riscului unui atac.
A doua metoda consta in folositrea functiei ini_set, care permite unui script sa redefineasca temporar un parametru din fisierul de configurare php.ini.
Consideram un exemplu de cod in care intentionat incercam sa citim variabile care nu exista:
<?php
ini_set('display_errors',1);
echo "Valoarea transmisa este ".$var;
?>

In exemplul de mai sus daca variabila cu nume: "var" nu exista PHP va afisa un mesaj de eroare de genul:

Notice: Undefined variable: var

Putem determina tipurile de erori pe care le semnaleaza PHP folosind functia: error_reporting(). Aceasta preia o constanta care specifica nivelul la care se afiseaza erorile.

Exemplu:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL & ~E_NOTICE);

echo "Valoarea transmisa este ".$_GET['orase'];
?>
- Testati acest exemplu pentru a vedea rezultatul.
Utilizare formulare HTML cu ... <<-- Anterior --- Urmator -->> Constante si tipuri de ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a crea o caseta de adaugare text?
<form> <input> <div>
<input type="text" name="a_name" value="val" />
Ce proprietate CSS se foloseste pentru a afisa textul cu majuscule-mici?
display font-variant font-style
h3 {
  font-variant: small-caps;
}
Ce instructiune afiseaza o fereastra cu un mesaj in ea?
for() Date() alert()
var msg = "Viziteaza CoursesWeb.net";
alert(msg);
Indicati codul PHP prin care se obtine IP-ul utilizatorului.
$_SERVER["HTTP_USER_AGENT"] $_SERVER["REMOTE_ADDR"] $_GET[]
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
Cum se traduce cuvantul "actually"?
actual de fapt acum
He actually came on time.
- De fapt, el a venit la timp.
Cum se traduce expresia: "Hace buen tiempo"?
Face timp E vreme frumoasa Drum bun
Hoy hace buen tiempo.
- Astazi e vreme frumoasa.
Variabile de mediu si erori - Tutoriale PHP