Sécurité

Include

6.Le langage PHP

6.7.Include

6.7.5.Comment configurer include_path?

6.7.5.1.Introduction

Il existe différents moyen de modifier la valeur include_path
  • En modifiant le fichier php.ini[où?]
  • En modifiant la configuration du serveur web Apache
  • En utilisant des fonctions PHP
mais nous verrons que ces méthodes ne sont pas toutes satisfaisantes.

6.7.5.2.Modification dans php.ini

A la base, comme tout autre paramètre PHP, include_path est défini dans le fichier php.ini[où?]. Une option, pour modifier cette valeur consiste donc à effectuer la modification directement au niveau du fichier. Cette solution est simple et efficace mais pas satisfaisante.
Faire ainsi implique de modifier la configuration du serveur juste pour votre application alors que peut-être d'autres applications tournent sur ce même serveur et peut-être que votre modification va avoir des répercutions néfastes sur ces autres applications. Et il n'est pas sur non plus que les personnes désirant déployer votre application auront le droit de modifier le fichier php.ini. Et ce n'est assurément pas le cas, si l'application est installée chez un hébergeur en hébergement mutualisé (incluant les hébergements gratuits).

6.7.5.3.Modification au niveau d'apache

Si le serveur a été configuré de telle sorte que vous avez ces droits vous pouvez modifier la configuration de votre environnement web via une directive dans le fichier .htaccess
php_value include_path ".:/usr/share/php:/usr/local/mabibliotheque"
Si vous avez de la chance, il y aura un environnement web (un virtual host) par application tournant sur le serveur et dans ce cas, cette modification sera sans effet sur les autres serveurs mais les utilisateurs de votre projet auront-ils vraiment le droit de faire ces modifications? Rien n'est moins sur.

6.7.5.4.Modification via un script PHP

Le paramètre include_path peut également être modifié via une fonction PHP set_include_path() et c'est cette méthode que nous préférons puisqu'elle ne nécessite aucune intervention sur le serveur. Ce qui simplifie grandement le déploiement et est applicable à tous.
Vous pouvez donc faire directement
set_include_path('.:/usr/share/php:/usr/local/mabibliotheque');
ou mieux, pour récupérer la configuration par défaut sans avoir à la recopier (au risque d'avoir des différences)
set_include_path(get_include_path().PATH_SEPARATOR.'/usr/local/mabibliotheque');
En contre partie, cette façon de faire implique d'appeler cette fonction en début de script ou tout du moins avant toute inclusion ne faisant pas appel à des chemins absolus ou relatifs. Et ceci pour tous les scripts principaux (ceux qui sont exécutés et non ceux qui sont inclus).Pour cela, vous avec donc intérêt à créer un script que vous pouvez appeler include_path_inc.php que vous intégrerez dans les scripts principaux via des appels du genre
require_once(dirname(__FILE__).'/../include/include_path_inc.php');
Ici vous pouvez apprendre :
Forum PHP
Version imprimable: imprimer