Daca aveti fisiere in diferite directoare care include un fisier php ce la randul lui include un alt fisier, o problema poate fi calea de includere ce se schimba cand fisierul e inclus din directoare de nivel diferit.
De exemplu, in aceasta structura de fisiere si directoare:
/
- dir1/
- dir1_2/
level_2.php
level_1.php
config.php
index.php
- "level_1.php" (care e in "dir1/") include "config.php".
- "level_2.php" (in "dir1_2/") include "level_1.php".
- "index.php" (in root "/") include "level_1.php".
Dupa cum puteti observa, "level_1.php" este inclus din directorul radacina (in "index") si din "dir1_2/" (in "level_2").
Daca in 'level_1.php' se include "config.php" folosind:
include('../config.php');
Acest cod nu va functiona cand "level_1.php" e inclus in celelalte fisiere.
Problema e, cum sa fie inclus "config.php" in "level_1.php" astfel incat acest fisier sa poata fi accesat /inclus de oriunde.
Am incercat calea absoluta /intreaga la server, folosind:
dirname(__FILE__) (sau:
__DIR__ ), dar nu a functionat in Windows.
Cautand pe net ca sa gasesc o solutie adecvata la aceasta problema, am gasit urmatorul cod ce obtine
calea relativa la directorul radacina a site-ului ("www/", "public_html/", "httpdocs/"):
$current_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$current_host = pathinfo($_SERVER['REMOTE_ADDR'], PATHINFO_BASENAME);
$the_depth = substr_count( $current_path , '/');
// Seteaza calea relativa la radacina
if($current_host == '127.0.0.1') $pathtoroot = str_repeat('../' , $the_depth-1);
else $pathtoroot = str_repeat ('../' , $the_depth);
echo $pathtoroot;
Am pus acest cod intr-o functie ce returneaza calea relativa din orice director curent la radacina, si problema a fost rezolvata folosind aceasta functie ca sa fie inclus "config.php" in "level_1.php", care poate fi accesat de oriunde.
// returneaza calea relativa din directorul curent la radacina
function getRootPath() {
$current_path = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$current_host = pathinfo($_SERVER['REMOTE_ADDR'], PATHINFO_BASENAME);
$the_depth = substr_count( $current_path , '/');
// Seteaza calea relativa la radacina
if($current_host == '127.0.0.1') $pathtoroot = str_repeat('../' , $the_depth-1);
else $pathtoroot = str_repeat ('../' , $the_depth);
return $pathtoroot;
}
// include fisier ce se afla in directorul radacina
include(getRootPath(). 'config.php');
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut e folosit in tag-ul <a> pentru adresa link-ului?
src href rel<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Ce proprietate CSS seteaza tipul fontului utilizat?
font-family text-decoration font-sizeh2 {
font-family:"Calibri", sans-serif;
}
Ce instructiune selecteaza toate tag-urile <div> cu class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length; // numar elemente selectate
alert(nr_elms);
Indicati functia care returneaza suma valorilor dintr-un array.
array_sum() array_diff() array_shift()$arr =[1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum; // 10
Indicati forma corecta a verbului "study" (a studia) la Trecutul Simplu in aceasta propozitie: "We (study) English."
studyed studys studiedWe studied English.
- Noi am studiat engleza.
Indicati forma corecta a verbului "decir" (a spune) la Prezent in aceasta propozitie: "Yo (decir) siempre la verdad."
digas digo decirYo digo siempre la verdad.
- Eu spun mereu adevarul.