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?

Était-ce utile?

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:

  1. Pas laid avec de multiples bidouille comprend une profondeur différente. Juste include 'head.php'.
  2. Pas de dépendance à l'égard php.ini d'édition.
  3. Pas besoin d'utiliser set_include_path() avant d'inclure.
  4. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top