IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

pb alias require_once : config php.ini ou bug ? [EasyPHP]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut pb alias require_once : config php.ini ou bug ?
    Voilà,

    Ma config: EasyPHP
    # Apache/2.2.14 (Win32) PHP/5.3.2
    # Version du client MySQL: mysqlnd 5.0.7-dev

    J'ai voulu placer toutes mes bibliothèques dans un répertoire c:\...\mylibs\
    J'ai créé un alias via l'admin d'easyphp: http://localhost/libs

    Quand j'utilise le chemin virtuel "http://localhost/libs/" dans la barre d'adresse du navigateur, j'accède à mes bibliothèques de fonctions sans pb.

    Quand j'utilise le chemin virtuel dans ma page.php située dans un autre répertoire virtuel via require_once("/libs/..."), j'ai un "failed to open stream: No such file or directory".

    En fouillant la toile, j'ai trouvé une solution intermédiaire et j'ai changé dans le php.ini la valeur de allow_url_include (initialement à Off)
    allow_url_include=On

    require_once("/libs") ne fonctionne toujours pas.
    Solution: require_once("http://localhost/libs/...")
    Mais du coup, une autre message apparait :
    Notice: Undefined index: HTTP_USER_AGENT (ainsi que pour les autres variables de $_SERVER. Je précise que j'ai volontairement placé error_reporting(E_ALL); car je veux faire du code le plus pro et propre possible.

    Quelqu'un a-t-il une idée ? Est-ce un pb connu,y a t il une solution ?

  2. #2
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 453
    Points
    453
    Par défaut
    Hello,

    je t'explique pourquoi, d'après moi, ca ne marche pas comme tu le voudrais.
    Le fait de créer un alias modifie la configuration du serveur HTTP Apache, mais pas le comportement des fonctions de PHP, notamment require_once.
    Par contre, le comportement de require_once est affecté par la directive de configuration de PHP include_path. C'est cette directive que tu devrais modifier dans le php.ini.
    Par défaut, il me semble qu'elle vaut ".", il faudrait la passer a ".:c:\...\mylibs\".

    Bon code.
    Keep it simple, stupid !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut

    Merci Tesing, c'est EXACTEMENT cela.

    A chaque installation d'une nouvelle version EasyPHP, il y a nécessité de tout re-configurer. De ce fait, j'essaie d'avoir des sites le plus indépendants possibles d'EasyPHP.

    C'est à se demander à quoi servent les alias

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il faudrait déjà remettre les choses à leur place et ne pas confondre chemins système et HTTP. EasyPHP, ou tout autre élément, n'est en rien responsable de vos "déboires".

    L'alias, n'est connu que d'Apache, il va mapper un chemin HTTP virtuel [qui ne pointerait sur rien normalement] à un tout autre emplacement du système de fichiers (souvent, même hors de l'arborescence du DocumentRoot). Donc évidemment, sans passer par HTTP, vos alias ne sont pas connus d'autrui, à commencer par PHP. On pourrait être tenté de faire une inclusion en passant par HTTP pour régler le problème, sauf que le script que vous cherchez à inclure sera évalué, donc vous n'en récupéreriez pas son code PHP mais le code HTML résultant de son interprétation.

    Par conséquent, seule solution [valable], faire une inclusion avec un chemin système correct. Soit relatif pour atteindre les inclusions, soit absolu (construit dynamiquement préférable) soit on peut aussi faire intervenir l'include_path mais, à moins d'être dynamique en étant géré par le script, l'inconvénient c'est qu'il faut le réécrire et reconfigurer sur chacun de ses environnements (chose qui n'est pas toujours possible).

    Après on peut se demander quel est l'intérêt de rendre ses librairies accessibles en HTTP. Ou, encore, de gérer ses projets avec des alias quand il y a des solutions plus adaptées (VirtualHosts).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP] config smtp du php ini pour envoi mail
    Par ARTscan dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2009, 14h52
  2. [Configuration] modifier la config du php.ini chez l'hébergeur
    Par LDDL dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/12/2006, 22h05
  3. [Configuration] Problème de config (php.ini)
    Par artotal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/08/2006, 00h54
  4. [déja posé]config php.ini ?
    Par eon-of-the-scorn dans le forum Apache
    Réponses: 2
    Dernier message: 03/08/2006, 11h58
  5. Réponses: 2
    Dernier message: 29/10/2005, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo