Domanda

Posso impostare il percorso di inclusione PHP nel file php.ini:

include_path = /path/to/site/includes/

Ma poi altri siti web sono interessati, quindi non va bene.

Posso impostare l'inclusione PHP all'inizio di ogni file:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Ma questa sembra una cattiva pratica e ingombra le cose.

Quindi posso includerlo e quindi includerlo in ogni file:

include 'includes/config.php';

O

include '../includes/config.php';

Questo è quello che sto facendo adesso, ma il percorso di inclusione di config.php cambierà a seconda di cosa lo include.

C'è un modo migliore?Importa?

È stato utile?

Soluzione

Se utilizzi Apache come server web puoi sovrascrivere (se lo consenti) le impostazioni utilizzando .htaccess File.Vedere il manuale PHP per dettagli.

Fondamentalmente inserisci un file chiamato .htaccess nella root del tuo sito web, che contiene un po' di PHP ini valori.A condizione che tu abbia configurato Apache per consentire gli override, questo sito utilizzerà tutti i valori nella tua configurazione PHP, + i valori specificati nel .htaccess file.

Può essere utilizzato solo con PHP_INI_ALL E PHP_INI_PERDIR direttive di tipo

come indicato nella pagina che ho linkato.Se fai clic sull'elenco completo, vedrai che il percorso di inclusione è a PHP_INI_ALL direttiva.

Altri suggerimenti

Erik Van Brakel ha dato, secondo me, una delle migliori risposte.

Inoltre, se utilizzi Apache e host virtuali, puoi configurare gli include direttamente al loro interno.Usando questo metodo, non dovrai ricordarti di lasciare i comandi php_admin nel tuo .htaccess.

Usare un php.ini file nel sito web radice, se la tua configurazione utilizza PHP COME CGI (il caso più frequente sugli host condivisi) con la stessa sintassi dell'intero server php.ini;mettilo dentro .htaccess se hai PHP come modulo Apache (fai a phpinfo() se non sei sicuro):

php_value include_path "wherever"

Tieni presente che per cartella php.ini does non influisce sottocartelle.

Perché pensi che aggiungere per includere il percorso sia una cattiva pratica?

Questo codice vicino alla parte superiore dello script root non dovrebbe essere così male...

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

IMHO il vantaggio principale è che è portatile e compatibile non solo con Apache

MODIFICARE:Ho notato uno svantaggio di questo metodo:piccolo impatto sulle prestazioni.Vedere http://www.geeksengine.com/article/php-include-path.html

A seconda di come è configurato il tuo host, potresti essere autorizzato a inserire un file php.ini file nella radice della tua home directory con direttive di configurazione aggiuntive.

La tua applicazione dovrebbe avere un file di configurazione scritto in PHP.Quindi includilo con una pagina relativa in ogni pagina del programma.Quel file di configurazione avrà una variabile per il percorso della directory include, directory dei modelli, directory delle immagini, ecc.

Puoi impostare include_path anche nel tuo file php.ini.Sono un tipo da Perl, quindi mi aspetto di essere in grado di caricare include e avere include fare la cosa giusta.Ho tutti i miei include in una directory specifica, a cui viene aggiunta include_path.Posso fare cose come

require_once "ClassName.php";

Non devo preoccuparmi dei percorsi relativi o delle posizioni dei file.

Ho anche scritto il mio CustomRequire fare cose come

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

In questo modo posso modificare la modalità di inclusione in un secondo momento.Naturalmente, devi ancora trovare un modo per includere il tuo codice di inclusione :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top