2011-08-30 3 views
1

J'ai quelques choses dans différents fichiers différents qui sont appelés à partir de différents endroits. J'ai essayé d'utiliser une variable $ ROOT, mais parce que je vais à partir de quelques fichiers différents (index.php, view.php, admin/index.php etc) et ne pas avoir de bootstrap (ou quoi que ce soit appelé), je ne peux pas toujours obtenir à $ ROOT des choses appelées par ajax etc ..php include_paths dans htaccess

si je mets le include_path via htaccess un peu comme:

php_value include_path ".;C:\wamp\www\project\"

Je suppose que cela ne comprend pas sous-répertoires, et je devrais également ajouter une ligne pour chaque autre répertoire où mes fichiers résident même s'ils sont dans C:\wamp\www\project\components ou C:\wamp\www\project\model?

Et est-ce que j'ajoute de nouvelles lignes ou des virgules? Je ne trouve aucun exemple en ligne d'utilisation du htaccess pour définir des chemins d'accès avec des chemins multiples ...

Il existe aussi un moyen d'obtenir tout ce qui concerne ma variable $ ROOT et d'utiliser des chemins absolus, et d'avoir en quelque sorte tous les fichiers , même si elles sont dans des endroits différents, référence cette variable particulière? (sans avoir à faire des changements en gros à tous les fichiers dans l'application?) Qui a l'avantage de devoir changer sur le fichier dans un changement de serveur/déploiement, mais je ne sais pas comment commencer à s'y prendre!

merci :)

+0

Vous pouvez modifier dynamiquement le chemin d'inclusion depuis un script, ce qui vous permet d'utiliser votre variable $ ROOT. Mais alors vous rencontrez un problème de poule-oeuf - si $ ROOT est dans un fichier qui n'est pas déjà dans votre chemin d'inclusion, vous ne pouvez pas l'inclure sans un chemin absolu. –

+0

Ouais ... que le potentiel de la poule et de l'œuf est quelque chose que j'essaie de contourner. Cela a rendu mon cerveau triste. Je suppose que si j'inclue le répertoire avec la config, require_once config.php en haut de chaque page et puis utilise mon $ racine var partout ailleurs je devrais être couvert? – Damon

Répondre

1

Je suppose que ne comprend pas les sous-répertoires,

Pourquoi ne pas vous essayer? (Il ne comprend sous dirs)

Je ne peux pas trouver un exemple en ligne d'utiliser le htaccess pour définir des chemins inclure avec plusieurs chemins

? Vous avez déjà fourni un:

php_value include_path "; C:. \ Wamp \ www \ projet \"

Les chemins sont '' et 'C: \ wamp \ www \ projet \'

(BTW sa meilleure pratique à utiliser '/' comme dir seperator - il évite la confusion sur le style unix échapper)

+0

ah merci. qu'est-ce que '.' référence? – Damon

+0

p.s. les fichiers n'étaient pas inclus mais je n'étais pas sûr si c'était la chose du subdir ou juste que mon fichier htaccess ne fonctionne pas du tout .. je suppose que c'est le dernier – Damon

+0

@Damon: '.' est le répertoire actuel – symcbean

0

Dans un environnement Windows, vous désignez utiliser des points-virgules pour séparer les chemins d'inclusion comme suit:

php_value include_path ".;C:\wamp\www\project\;C:\wamp\www\project\components;C:\wamp\www\project\models" 

Mais je ne sais pas exactement pourquoi vous voudriez le faire. L'ajout de sous-répertoires ouvre la possibilité de collisions de noms de fichiers. Si vous avez, C: \ wamp \ www \ projet \ components \ exemple.php et C: \ wamp \ www \ projet \ modèles \ exemple.php, y compris les deux sous-répertoires dans votre chemin d'inclusion créera une ambiguïté lorsque vous essayez de inclure un fichier. Si vous avez déjà le répertoire du projet dans votre chemin d'inclusion, vous pouvez déjà appeler n'importe quoi à l'intérieur en utilisant un chemin relatif. Par exemple:

<?php include 'components/example.php'; ?> 

Cela comprendrait C: \ wamp \ www \ projet composants \ \ example.php et d'éliminer les risques de toute collision de nommage des fichiers.