2008-11-24 13 views
2

Est-ce que tous les fichiers php include doivent être dans un répertoire include, ou est-ce juste une commodité organisationnelle? Puis-je inclure des fichiers de n'importe quel répertoire en utilisant le chemin d'accès à ce répertoire? Les fichiers html contenant php doivent-ils avoir une extension php? Si oui, je suppose que cela signifierait que tous mes documents html seraient php s'ils ont tous les menus que je prévois "inclure". Est-ce que ce protocole est acceptable pour avoir tous les fichiers de votre site comme fichier php?php inclus dans les fichiers-répertoires html

Un arc humble révérence ...

P.S. Y a-t-il une bonne bible sur ce sujet?

Répondre

7

Vous n'avez pas besoin d'avoir votre php inclut partout en particulier, ou qui ont une extension de fichier ...

appel include ('/ chemin/vers/votre/fichier/avec/any/extension.extension') devrait l'inclure comme un fichier php

Normalement plus sûr d'appeler des fichiers avec le code php avec une extension php tho.

1

Si vous mettez PHP dans un fichier .html et l'incluez(), cela devrait fonctionner. Cependant, si quelqu'un demande le fichier .html directement à partir du serveur, il pourrait voir tout votre code PHP non traité, ce qui est dangereux. Par conséquent, si vous le faites, placez ces fichiers dans un répertoire non accessible par le Web (par exemple, au-dessus de la racine du document) ou modifiez la configuration de votre serveur Web afin que les fichiers .html soient traités comme PHP.

Vous devriez être en mesure d'inclure() un fichier, mais vous pouvez avoir des problèmes accéder à certains répertoires s'il y a une open_basedir restriction en PHP (que vous trouverez probablement sur la plupart webhosts)

1

Vous pouvez inclure des fichiers où que vous soyez sur le serveur (en fonction des privilèges d'accès au fichier et des restrictions de sécurité, bien sûr). L'utilisation d'un répertoire inclus permet de bien organiser les choses, mais n'est pas obligatoire.

Si un fichier contient du code PHP, il doit être enregistré en tant que fichier .php. Dans le cas contraire, le code ne sera pas exécuté. Cela vous laisse avec un fichier qui se comporte différemment selon la façon dont il est accédé, ce qui n'est probablement pas ce que vous vouliez et pourrait être une menace pour la sécurité. Pour contourner cela, j'ai vu certaines personnes remplacer les types de fichiers afin que le serveur traite tous les fichiers .html comme des scripts PHP - Je ne le recommande pas, car il ralentira le traitement de tous les fichiers, même s'ils ne comprennent pas n'importe quel PHP. Suivez le principe de la plus petite surprise - laissez vos fichiers HTML être .html et vos fichiers PHP seront .php - et tout le monde sera plus heureux.

0

James Musser:

Je pense que vous faites référence à Apache SSI inclut désormais (voir http://httpd.apache.org/docs/2.2/howto/ssi.html#standard-footer)

Ne connaissant pas la réponse, je l'ai essayé, et voici mes résultats

Extension Call method  PHP runs 
.html  browser   no 
.html  Apache #include no 
.html  PHP include()  yes 
.php  browser   yes 
.php  Apache #include yes 
.php  PHP include()  yes 

(Tests effectués avec WinXP, Apache 2.2.3, PHP 5.2.26 et CentOS 5.2, Apache 2.2.3, PHP 5.1.16)

Donc votre réponse est OUI - si vous souhaitez appeler un script PHP via un Sache Apache #include, le script doit avoir une extension .php (ou une autre extension, par exemple .php4.php5 etc, qui est enregistré avec Apache comme étant un script PHP), sinon il ne fonctionnera pas.