Pb codage include_path dans php.ini

WRInaute discret
je viens de changer d'hebergeur, de passer de Free vers 1&1.

Le probleme est que mes include ne fonctionnent plus, car le repertoire "include" n'est pas codé dans l'include path.

Je voudrais, comme chez Free, que le repertoire "include" à la racine du site, soit le repertoire par defaut des includes.

Que faut-il coder dans php.ini ?

Si on modifie php.ini, la modif est prise en compte immediatement, ou faut-il relancer php ?

Enfin, chez 1&1, pas de faq et support technique muet...
 
WRInaute discret
bonjour

déja si vous êtes en mutualisé vous n'aurez pas accés a php.ini. Ensuite faut voir la conf exsitante de php.ini, sur le principe si vous avez ces erreurs c'est que c'est mal codé, il faut toujours includer en dur avec les fullpaths pour passer en safe mode notamment
 
WRInaute discret
autrement dit, tu m'expliques que ce n'est pas bien de coder avec un repertoire include ? Le probleme est que l'appel aux fichiers par la fonction include ne se fait pas toujours au meme niveau (gestion des "../../repert...", adressage relatif),
et que l'on ne peut pas utiliser l'adressage absolu car le fichier serait considéré comme externe.

J'ai créé un fichier php.ini, et je vois mes modifs avec info(), et le message d'erreur correspond au repertoire indiqué dans info().

extrait :
Code:
safe_mode	Off	
safe_mode_exec_dir	/usr/local/php/bin	
include_path	.:/usr/local/lib/php:/include:/usr/local/lib/php/include

execution d'une fonction include :

Code:
Warning: main(constant_prive.php): failed to open stream: No such file or directory in /homepages/18/d140142221/htdocs/index.php on line 4

Fatal error: main(): Failed opening required 'constant_prive.php' (include_path='.:/usr/local/lib/php:/include:/usr/local/lib/php/include') in /homepages/18/d140142221/htdocs/index.php on line 4
j'y pige quedalle dans les repertoires unix
 
WRInaute accro
Code:
if(!defined('PATH_SEPARATOR')){
	//MS Windows trick
	define('PATH_SEPARATOR', ( substr(PHP_OS, 0, 3) == 'WIN' ) ? ';' : ':');
}

$include_path = array('.', '/home/user/includes/');
ini_set('include_path', join(PATH_SEPARATOR, $include_path));
 
WRInaute discret
désolé spoutnick, mais malgré tes indications, je ne m'en sors pas.

le probleme ne vient pas du path-separator, mais de la facon d'indiquer le repertoire include.
 
WRInaute discret
j'ai fini par obtenir la solution, apres de nombreux aller-retour de mail avec 1&1.
Leur faq est enfin en place, mais bien vide. J'ai du mal à croire à leur professionnalisme.

Il faut ajouter un fichier php.ini sur chaque repertoire avec dedans :

include_path=.:/kunden/homepages/18/d140142221/htdocs/include/

bien sur en remplacant le nom du serveur par le bon. Et ça fonctionne.

Par contre, je trouve les temps de reponse moins bons que ceux de Free.
 
Nouveau WRInaute
Cyclurba a dit:
Il faut ajouter un fichier php.ini sur chaque repertoire avec dedans :
include_path=.:/kunden/homepages/18/d140142221/htdocs/include/
bien sur en remplacant le nom du serveur par le bon. Et ça fonctionne.

Salut et merci pour ta réponse,
cependant je voulais obtenir une précision, qu'appelles-tu le nom du serveur ? comment je peux le trouver, c'est la suite de nombre ?
J'ai essayé d'obtenir le chemin en utilisant la fonction realpath, cependant j'obtiens (j'ai changé les chiffres pour la sécurité) :
/homepages/6/a142497777/htdocs/le_rep_a_inclure/

comme tu peux le constater je n'ai pas de kunden mentionner.
Quelle modification dois-je apporter à ce chemin pour que l'inclusion de mon package pear fonctionne ?

Merci d'avance.
Séb.
 
Discussions similaires
Haut