[php] inclure obligatoirement un fichier

Eléphant du PHP | 99 Messages

15 déc. 2007, 21:25

Salut!
Je me demandais comment faire pour exécuter une fonction dans tous les cas à la fin d'un fichier php, et ce même si un exit() à été appelé...et sans que le système puisse être détourné.
J'ai essayé en mettant un auto_prepend qui contient un ob_start() avec un appel à une fonction callback, mais dans ce cas, il suffit de rajouter un ob_end_clean() au début du vrai script pour que ce système soit neutralisé...
Une idée?

Merci d'avance! :D

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

15 déc. 2007, 21:57

auto_prepend_file + register_shutdown_function() devraient faire ça.

Mammouth du PHP | 505 Messages

16 déc. 2007, 11:45

Essai avec la directive auto_append_file (php.ini uniquement)

Mammouth du PHP | 1885 Messages

17 déc. 2007, 03:15

Tu peux créer un fichier .htaccess avec ce contenu:

Code : Tout sélectionner

php_value auto_prepend_file /path/vers/ton/fichier-header.php php_value auto_append_file /path/vers/ton/fichier-footer.php
http://www.generationphp.net/2007/10/16 ... -fichiers/
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

17 déc. 2007, 22:39

Je ne pense pas que auto_append_file soit ce que recherche Arcanis, puisque ce dernier précise qu'il cherche une méthode qui fonctionne même si exit est appelé. Or, le manuel spécifie que auto_append_file ne s'applique pas dans ce cas.

Mammouth du PHP | 505 Messages

18 déc. 2007, 09:49

Exact, autant pour moi.

Mammouth du PHP | 881 Messages

16 avr. 2008, 05:52

Bonjour tout le monde.

Je viens de passer à Linux et voici que je rencontre un problème qui en génère un autre.
Sous Wamp, j'ai suivi ceci et tout a bien fonctionné.
Tu peux créer un fichier .htaccess avec ce contenu:

Code : Tout sélectionner

php_value auto_prepend_file /path/vers/ton/fichier-header.php php_value auto_append_file /path/vers/ton/fichier-footer.php
http://www.generationphp.net/2007/10/16 ... -fichiers/

Depuis Linux, je ne suis plus capable d'avoir des .htaccess un peu partout dans mes sites. Je dus donc modifier le php.ini, mais je me retrouve maintenant avec un bas de page uniformisé pour tous mes sites! J'aime bien protéger certains sous-répertoires et donc leur faire un .htaccess particulier, aussi, j'ai plusieurs sites sur mon HDD, à chacun son .htaccess. Depuis Linux, ils ne sont plus lus.

Je suis donc allé voir la documentation http://www.php.net/manual/fr/ini.core.p ... epend-file
Très bien et beau, mais je ne comprends pas. Dans le tableau, c'est indiqué que cette fonction et modifiable PHP_INI_PERDIR Je veux bien, mais 1) qu'est-ce que ça veut dire (par directory)? 2) Où dois-je inscrire cela? Je pensais que c'était dans mon .htaccess.

Si vous pouvez me débloquer mes .htaccess, ça résolvera mon problème de auto_append
Le Linux en question est un Debian

Merci
Soyez artisans de paix

Eléphant du PHP | 422 Messages

16 avr. 2008, 09:00

il suffit de rajouter un ob_end_clean() au début du vrai script pour que ce système soit neutralisé...
c'est qui le "il" qui va rajouter un ob_end_clear () ?

ViPHP
ViPHP | 5924 Messages

16 avr. 2008, 11:44

Je veux bien, mais 1) qu'est-ce que ça veut dire (par directory)? 2) Où dois-je inscrire cela? Je pensais que c'était dans mon .htaccess.
Cela veut dire "par dossier", cela veut dire que en effet cela peut se configurer dans ton .htaccess, avec les directives php_flag et php_value.
Si vous pouvez me débloquer mes .htaccess, ça résolvera mon problème de auto_append
Le Linux en question est un Debian
Dans les options de ton explorateur, demande lui de t'afficher les fichiers cachés…

Mammouth du PHP | 881 Messages

16 avr. 2008, 23:44

Je vois que je me suis mal exprimé.

Les codes requis sont bien présents dans mes .htaccess et je vois .htaccess dans mes sous-répertoires, je puis les modifier à ma guise.

Le problème est que mes .htaccess ne sont pas consultés par le serveur. Je puis donc y mettre ce que je veux, ça ne change jamais rien. J'ai mis la commande dans php.ini,mais là, je n'ai plus de diversité dans mes sites: pavage uniforme, tous les sites ont le même bas de page.


--------------


Peut-être ai-je la solution ici: http://doc.ubuntu-fr.org/lamp


.htaccess

Pour que apache2 prenne en compte la présence d'un fichier .htaccess, il faut éditer le fichier /etc/apache2/sites-available/default et remplacer les deux 1ers AllowOverride None (dans les balises <Directory /> et <Directory /var/www/>) par AllowOverride All


J'explore cette piste.

-----------------


Voilà le cas réglé, c'était la bonne piste, Mes .htaccess sont lus, maintenant.
Soyez artisans de paix

Eléphant du PHP | 99 Messages

29 avr. 2008, 19:34

il suffit de rajouter un ob_end_clean() au début du vrai script pour que ce système soit neutralisé...
c'est qui le "il" qui va rajouter un ob_end_clear () ?
Un utilisateur quelconque pouvant avoir des scripts php. Du moins c'était le cas dans mes tests, mais peut-être avais-je mal configuré php.