Page 1 sur 2

Ajouter une include PHP dans un fichier TMP ?

Posté : 11 déc. 2007, 18:06
par Petit beurre
Bonjour ! :)

Voilà j'ai un petit problème suite à mon précédent message, je voudrais faire une include dans un fichier TMP (un fichier template) et je me demandais si ça pouvait marcher sur ce type de fichier car j'ai essayé avec ces 2 codes et rien n'apparait malheureusement :

Code : Tout sélectionner

<?php include ('../contentmedia.php'); ?>
(chemin relatif)

ET

Code : Tout sélectionner

<?php include("/usr/home/domains/monsite.com/public_html/test/script.php"); ?>
(chemin vers www.monsite.com/test/script.php)

Est-ce que vous pouvez me donner un petit coup de pouce s'il vous plait ?

Merci à vous. ;)

Posté : 11 déc. 2007, 20:26
par Petit beurre
S'il vous plait, personne ne connait ? :cry:

Posté : 11 déc. 2007, 22:18
par Ryle
Modération :
Petit beurre, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Posté : 12 déc. 2007, 00:43
par Petit beurre
Pardon Ryle, j'attendrai mais c'est assez urgent et vu où vont les choses je n'aurai jamais de réponses.

Posté : 12 déc. 2007, 02:26
par Truc
Modération :
Tes délais ne nous intéressent pas.
Nous savons que tu es en difficulté puisque tu demandes de l'aide,
mais nous sommes tous bénévoles et répondons selon nos disponibilités.

Merci de ne pas s'impatienter.


Dis toi que les messages de modération suivis d'un message d'excuses font aussi remonter le poste :-s

Posté : 12 déc. 2007, 12:37
par Hywan
Le code PHP qui est dans ton fichier ne sera exécuter que si le fichier est compris comme du PHP par Apache. Si tu as un fichier .html et que tu lui mets du PHP dedans, il ne sera pas exécuté (car c'est un fichier html !).
Pour voir si ton fichier est considéré par Apache comme un fichier PHP, fais tout d'abord un petit echo. Tu seras fixé. Et d'ailleurs, si le code n'est pas exécuté, il apparaît dans la source, c'est ton cas ?

Pour se faire, tu peux demandé à Apache de considérer les .tmp comme des fichiers PHP avec ce code (à placer dans un fichier .htaccess) :

Code : Tout sélectionner

AddType application/x-httpd-php .tmp
.

Je te redirige vers la documentation d'Apache pour plus de détails (n'hésite pas aller de liens en liens, on apprend toujours pleins de trucs intéressants ;-)).

Posté : 12 déc. 2007, 14:24
par Petit beurre
Merci HyWan, c'est super gentil de ta part j'ai fait un echo et il affiche bien le texte donc le PHP s'éxécute bien. :)

Par contre quand j'insère ce code ci-dessous dans ce même fichier tmp, rien ne s'affiche :

Code : Tout sélectionner

<?php include ('../script.php'); ?>
Le chemin relatif doit sûrement être mauvais alors, car mon fichier tmp où j'insère l'include se trouve dans www.monsite.com/test/templates.index.tmp et le script PHP se trouve sur www.monsite.com/test/script.php

Est-ce bien le bon chemin relatif ?

Posté : 12 déc. 2007, 14:47
par Berzemus
a ce que je vois oui. Tu n'as qu'a faire un echo dans le début de ton script script.php pour voir s'il s'exécute.

Posté : 12 déc. 2007, 15:31
par Petit Beurre
J'ai mis dans script.php :

Code : Tout sélectionner

<?php echo "test"; ?>
et rien ne s'affiche donc cela vient sûrement du chemin relatif qui doit être mauvais non ? Je vois pas du tout. :(

Posté : 12 déc. 2007, 15:34
par zeus
Même si tu mets le include dans ton fichier .tmp, le chemin doit être relatif par rapport au script appelé par le navigateur (page.php inclus template.tmp inclus libs.php => le chemin doit être relatif par rapport à page.php, pas template.php)

Posté : 12 déc. 2007, 15:38
par Petit Beurre
Salut Zeus, j'ai mis

Code : Tout sélectionner

<?php include (dirname (__FILE__).'/script.php'); ?>
et là ça marche !!

Je ne comprends pas d'ailleurs pourquoi ça marche avec ce code et pas avec l'include du haut ?

Posté : 12 déc. 2007, 16:09
par zeus
Parce que _FILE_ représente le chemin du fichier dans lequel il est affiché.
Et que en utilisant dirname(__FILE__), tu utilises un chemin absolu (depuis la racine de ton serveur) et non plus relatif. Du coup, le chemin ne dépend plus du fichier dans lequel il est appelé, il est juste dès que tu inclus le template ;)

Fait
echo dirname (__FILE__).'/script.php';
et tu devrais comprendre la différence ;)

Posté : 12 déc. 2007, 16:27
par Petit Beurre
J'ai fait ce que tu as dit Zeus et il me donne mon chemin absolu : /home/www/monsite/www/test/script.php

C'est un véritable casse tête, l'include par défaut du script était en chemin absolu :

Code : Tout sélectionner

<?php include("/var/www/monsite/script.php"); ?>
et cela ne marche pas non plus car rien n'est affiché ... :cry:

Posté : 12 déc. 2007, 16:40
par Petit Beurre
PS : Les fichiers PHP étaient en chmod 666 et je viens de les mettre en 777 mais j'ai toujours le même problème.

Posté : 12 déc. 2007, 17:30
par zeus
Si tu compares tes chemins absolu, tu te rends bien compte que ce ne sont pas les même ...
Voilà pourquoi l'inclusion avec un chemin absolu ne fonctionne pas ;)

Sinon, un chmod 666 signifie que tout le monde peut lire et écrire sur ton fichier alors que 777, tout le monde peut lire, écrire et exécuter le fichier.