2009-07-20 4 views
4

J'ai hérité du code sur un système que je n'ai pas configuré, et je suis confronté à un problème de localisation du chemin d'inclusion de PHP. .Qu'est-ce qui peut changer le include_path entre php.ini et un fichier PHP?

Je dispose d'un fichier php.ini avec le include_path suivant

include_path = ".:/usr/local/lib/php" 

Je dispose d'un fichier PHP dans le Webroot nommé test.php avec l'appel suivant phpinfo

<?php 
     phpinfo(); 

Quand je prends une regardez l'appel phpinfo, les valeurs locales pour le include_path sont remplacées

    Local Value          Master Value 
include_path .;C:\Program Files\Apache Software Foundation\  .:/usr/local/lib/php 
       Apache2.2\pdc_forecasting\classes    

De plus, les fichiers php.ini indique qu'aucun fichier .ini supplémentaires sont chargés

Configuration File (php.ini) Path   /usr/local/lib 
Loaded Configuration File     /usr/local/lib/php.ini 
Scan this dir for additional .ini files  (none) 
additional .ini files parsed    (none) 

Alors, ma question est, quoi d'autre dans un système standard de PHP (y compris certaines bibliothèques PEAR) pourrait être redéfinissant la include_path entre php .ini et le code php réel étant interprété/exécuté.

Répondre

5

Outisde des moyens PHP

ini_set('include_path', 'new/path'); 
// or 
set_include_path('new/path'); 

Ce qui pourrait être chargé dans un fichier PHP via auto_prepend_file, un fichier .htaccess peut faire le faire aussi bien

phpvalue include_path new/path 
+0

Grumble grumble .htaccess. J'ai passé au peigne fin le http.conf cherchant des remplacements et ai oublié le .htaccess. –

2

Un fichier .htaccess ou la configuration d'Apache (httpd.conf) pourrait également être responsable.

Vérifiez tout ce qui ressemble à ce qui suit:

php_value include_path something 

Plus d'informations sur ce comportement ici:

PHP: How to change configuration settings


L'autre option serait l'utilisation de ini_set() ou set_include_path() quelque part, mais compte tenu que votre test.php contient seulement phpinfo() (et en supposant que test.php est appelé directement), je doute que c'est votre problème.

3

Il y a plusieurs raisons pour lesquelles vous obtenez des résultats étranges. Include_path remplacé quelque part dans votre code php.

  • Vérifiez votre code s'il contient set_include_path() appel. Avec cette fonction, vous pouvez personnaliser le chemin d'inclusion. Si vous souhaitez conserver le chemin actuel, concattez la chaîne . PATH_SEPARATOR . get_include_path()
  • include_path substitué dans le fichier .htaccess. Vérifiez s'il existe des directives php_value ou php_flag ajoutant des chemins douteux
  • fichier de configuration non standard dans l'interpréteur php.Il est très peu probable, cependant possible, que votre processus php a été démarré avec le fichier php.ini personnalisé. Vérifiez la configuration de votre serveur web et/ou la distribution php pour voir quelle est l'emplacement attendu de php.ini. Peut-être que vous regardez mal.
+0

+1: Même si vous répétez fondamentalement tout ce qui a déjà été dit. –

Questions connexes