Come faccio a sapere che includono percorso sarà utilizzato in PHP?
-
03-10-2019 - |
Domanda
Quando eseguo phpinfo()
e lo sguardo dalla categoria Configuration
sotto PHP Core
, vedo una direttiva intitolata include_path
, con un valore locale e un valore master.
In questo caso, il mio valore locale è impostato su
.: ./include: ../include: /usr/share/php: /usr/share/php/smarty: /usr/share/pear
e il mio valore master è impostato su
.: /usr/share/php: /usr/share/pear: /usr/share/php/pear: /usr/share/php/smarty
Il motivo per cui sto cercando di imparare come funziona questo è perché c'è un file nel sistema di cui sto lavorando Smarty.class.php
dal titolo, che sono suoni sicuro molto familiare a chi usa Smarty Templating motore.
Uno dei file PHP ha la seguente comprende:
require_once("Smarty.class.php"); require_once("user_info_class.inc");
Il file user_info_class.inc
si trova nella stessa directory del file rendendo l'inclusione, che rende perfettamente senso per me, ed è il modo che ho sempre file di riferimento. Ho deciso che volevo aprire il file Smarty.class.php e aveva pensato che sarebbe nella stessa directory, ma non è stato.
Dopo aver fatto un po 'di scavo, ho scoperto le variabili php_ini
, ed è stato finalmente in grado di individuare il file nella directory usr/share/php/smarty/
.
Così sembrerebbe che quando si effettua un include, ne consegue una sorta di ordine tra i valori locali e master per il include_path
.
Supponendo che le mie deduzioni erano corrette finora, qualcuno può spiegare l'ordine in cui le ricerche PHP per i file da includere?
Soluzione
Il valore globale è fondamentalmente ciò che è impostato in php.ini. Il valore locale è quello che è attualmente in uso. Il valore locale sovrascrive completamente il valore master.
Secondo il manuale, PHP controlla i percorsi nell'ordine in cui sono specificati nella cornice include_path: http://php.net/manual/en/ini.core.php#ini.include-path