Mai mult
Ia calea absolută de curent script
Am căutat de înaltă și joasă și a obține o mulțime de soluții diferite și variabile care conțin informații pentru a obține calea absolută. Dar ele par să funcționeze în anumite condiții și nu în altele. Există un glonț de argint mod de a obține calea absolută a executat script in PHP? Pentru mine, script-ul va rula din linia de comandă, dar, o soluție ar trebui să funcționeze la fel de bine dacă în termen de Apache etc.
Clarificări: inițial executat script-ul, nu neapărat de fișier în cazul în care soluția este codat.
238
15
__FILE__
constanta va oferi calea absolută a fișierului curent.Update:
Întrebarea a fost schimbat pentru a întreba cum de a prelua inițial executat script-ul în loc de script care rulează în prezent. Singurul (??) încredere modalitate de a face asta este de a utiliza
debug_backtrace
funcție.Exemple pentru: https://(www.)example.com/subFolder/myfile.php?var=blabla#555`
Observa!:
DIRECTORY_SEPARATOR
a se întoarce\
pentru Ferestre de tip hosting, în loc de/
.Pentru WordPress
Dacă plasați într-un incluse fișier, se imprimă calea aceasta include. Pentru a obține calea de părinte script, înlocuiți -
__FILE__ " cu " $_SERVER['PHP_SELF']
. Dar să fie conștienți de faptul că PHP_SELF este un risc de securitate!De la manual:
Notă: `DIR a fost adăugat în PHP 5.3.0.
Soluția corectă este de a utiliza
get_included_files
funcția:Acest lucru vă va oferi calea absolută inițială script, chiar dacă:
Aici sunt două scripturi de testare; principalele script și un incluse fișier:
Și rezultatul; notificare de la directorul curent:
Daca vrei sa ia director de lucru curent utilizarea
getcwd()
http://php.net/manual/en/function.getcwd.php
__FILE__
va reveni cu calea fisierului, de exemplu, pe XAMPPC:\xampp\htdocs\index.php "în loc de" C:\xampp\htdocs\
va dau absolută traseu din fișierul curent la care se cere traseu, ruta de directory server.
exemplu fișiere :
www/http/html/index.php ; dacă puneți acest cod în interiorul tău index.php se va reveni:
<?php echo dirname(__FILE__); // va returna: www/http/html/
www/http/html/class/myclass.php ; dacă puneți acest cod în interiorul tău myclass.php se va reveni:
<?php echo dirname(__FILE__); // va returna: www/http/html/clasa/
Doar folosi mai jos :
acesta vă oferă curent script(script-ul interior care ai pus acest cod) director fără slash de final. acest lucru este important, dacă doriți să includeți alte fișiere cu rezultatul
Daca're în căutarea pentru calea absolută relativă la server root, am'am constatat că acest lucru funcționează bine:
Aici's util funcția PHP-am scris pentru acest lucru cu precizie. Ca întrebarea inițială clarifică, se returnează calea de la care inițial script-ul a fost executat - nu fișierul suntem în prezent în.
Aceasta este ceea ce am folosi și funcționează în medii Linux. Eu nu't cred că acest lucru ar lucra pe un calculator cu Windows...
încercați această pe script
Cel mai simplu mod de a prelua calea absolută de cel inițial executat script-ul de care "principal" script și orice script inclus cu
includ
,nevoie
,require_once
este prin stocarea într-o constantă la începutul script principal:__FILE__
returnează calea de curent script. Folosit în interiorul unui inclus script se întoarce calea inclus fișier, nu scenariul inițial rula la fel de OP întreabă:Soluția de stocare a
__FILE__ într-o constantă este mai ușor și mai rapid decât recuperarea calea folosind
debug_backtrace()`Soluția de mai sus este potrivit atunci când există un singur "principal" script care includ fiecare alte nevoie de script-ul, la fel ca în cele mai multe aplicații web.
Dacă asta'nu e cazul și pot exista mai multe "intital scripturi" apoi, pentru a evita redefinitions și să aibă calea corectă stocate în interiorul constante fiecare scenariu poate începe cu:
Pentru script-ul rula sub server web
$_SERVER['SCRIPT_FILENAME']
va conține calea completă a numit inițial script, deci probabil index.php.ului căilor()
nu este necesară în acest caz.Pentru script rulat din consola
$_SERVER['SCRIPT_FILENAME']
va conține calea relativă la inițial numit script de lucru curent dir. Deci, dacă nu s-a schimbat directorul de lucru în interiorul script-ul dvs. se va rezolva pe cale absolută.