Comment ajouter un chemin à PHP include_path dans .htaccess
-
16-09-2019 - |
Question
Actuellement sur mon site j'utilise des déclarations comme:
include 'head.php';
include '../head.php';
include '../../head.php';
selon la profondeur de dossiers imbriqués je suis. Je suis sûr qu'il ya une meilleure façon de le faire.
Je suis convaincu .htaccess
est la solution, mais je ne suis pas sûr de savoir comment s'y prendre pour la mettre en œuvre. Si j'insérer:
php_value include_path "public/html/root"
... je perds le reste de mes chemins (/usr/lib/php
, etc.). Je naïvement essayé:
php_value include_path $include_path . "(path)"
mais bien sûr, cela ne fonctionne pas. Comment pourrais-je ajouter ou préfixer un chemin unique à cette liste avec .htaccess
?
La solution
Si vous ne pouvez pas modifier le fichier php.ini
lui-même, vous pouvez ajouter
set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);
avant vos relevés include
.
Toutefois, si vous vous trouvez avoir des problèmes de include
ou require
, il est probablement une odeur de code. La meilleure solution serait une bonne conception orientée objet avec une bonne fonction __autoload
.
Autres conseils
Créer dans les sous-sous-répertoires un .htaccess
de fichier avec le contenu
php_value include_path '../../includes'
ou quoi que include_path
est bon pour ce répertoire.
Avantages:
- Pas laid avec de multiples bidouille comprend une profondeur différente. Juste
include 'head.php'
. - Pas de dépendance à l'égard
php.ini
d'édition. - Pas besoin d'utiliser
set_include_path()
avant d'inclure. - Pas de dépendance, y compris des constantes comme
include INCLUDE_PATH . 'head.php'
.
Prix à payer:
Vous litières vos sous-sous-répertoires chacun avec un .htaccess
de fichier.