|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() ![]() Inscription : juin 2003 Messages : 1 217 ![]() |
Bonjour
J'ai une application en php qui marche très bien sous windows. Dans cette application les includes sont de la forme Code php :
include("../fonctions/nonfonction") Je veux déployer cette application sur un serveur sous mandriva mais les clients seront sous windows. Le problème les includes ne marche pas il faut que je les change comme ca Code php :
include("..\fonctions\nonfonction") ce qui matériellement pose problème. Et je ne sais même pas sil les clients vont fonctionner après changement. Merci
__________________
Amicalement |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Bonjour.
Tout d'abord les chemins sous Linux (interpréteur PHP ou pas) sont de la forme [...]/monfichier. Le serveur Apache sous Linux se fiche royalement des clients pour retrouver ses fichiers de fonction. Un client n’envoie qu'une requête HTTP et reçoit un résultat sous la forme de contenu (HTML, XML, etc), donc le chemin d'accès au fichiers de fonctions ce sont des traitements qui se passent uniquement au niveau serveur. Ensuite second problème : les \ sont interprétés comme caractères d'échappements, il faut donc écrire \\ mais là n'est pas le problème. De plus, même sous Windows, dans les versions récentes de PHP, l'arborescence Unix est correctement prise en compte de mémoire, mais à nouveau, là n'est pas le problème. Peut être faudrait-il plus détailler davantage ton problème Cordialement, Idriss |
|
00
|
|
|
#3 | |
|
Membre Expert
![]() ![]() Inscription : juin 2003 Messages : 1 217 ![]() |
Citation:
Pour être claire je croyait l'avoir été mais bon. Disons que j'ai un dossier fonction dans lequel j'ai plusieurs fichiers. Dans mon index.php (e dans d'autres fichier php) je fais appel à certains fichiers dans le dossier fonction. l'appel se fait comme suit le problème sous mandriva le / doit être remplacer par un \ pour que mes pages s'affichent. c'est à dire que quand je fait le résultat est correct. Par contre si je laisse tel quel j'ai rien Voila le problème.
__________________
Amicalement |
|
|
|
00
|
|
|
#4 | ||||
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Donc en gros si je te suis sous Mandriva :
- les \ ça fonctionne parfaitement - les / ça ne fonctionne pas On est bien d'accord ? ![]() Avec \ : Code :
Avec / : Code :
![]() Mis à part ce "léger" soucis, je ne vois toujours pas le rapport avec les clients ... |
||||
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : juin 2003 Messages : 1 217 ![]() |
Je suis devant un problème que je n'ai jamais rencontré auparavant.
je sais que les includes php fonctionnent avec des slash et non des antislash. Je rappel que l'application php fonctionne parfaitement sous windows avec les includes de la forme c'est quand j'ai voulu le déployer sous mandriva que je problème s'est manifesté. Et c'est dans les recherches de solutions que j'ai tester avec un antislash et j'ai eu des résultat correct. J'ai regardé dans le fichier php.ini mais j'ai rien trouvé de suspect. Est ce qu'il y a pas dans les fichiers de configuration de php ou d'apache quelque chose qu'il faut revoir.
__________________
Amicalement |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 882 ![]() |
Salut,
As-tu des erreurs éventuelles dans les logs d'erreur du serveur apache?
__________________
Alea Jacta Test! |
|
|
00
|
|
|
#7 | ||||
|
Membre Expert
![]() ![]() Inscription : juin 2003 Messages : 1 217 ![]() |
salut
Sur la page index, en mettant le include comme ca include("fonctions/loadfonction.php") j'ai cet erreur Code :
Code :
__________________
Amicalement |
||||
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Ah mais tout s'explique...
Avec \ le include ne trouve pas le fichier et renvoie un warning. Ton level d'erreur n'est pas assez élevé pour afficher ou peut être loguer cette erreur (voir dans /var/log/apache2/error.log ou quelque chose dans le genre). En utilisant require() à la place d'include() je suis sûr que tu verrais l'erreur. Avec / ton fichier est bien retrouvé ... sauf qu'il te manque le driver PDO pour ton SGBD à installer sur ton serveur mandriva. L'erreur est très claire et aucun rapport avec un chemin inexistant Cordialement, Idriss |
|
00
|
|
|
#9 |
![]() ![]() |
Bonjour,
Pour éviter l'usine à gaz au niveau des séparateurs des répertoires PHP propose la constante : DIRECTORY_SEPARATOR - Dans le cadre d'un développement tout POO, il est possible de tout ranger dans les espaces de nom (avec un autoloader adéquate) et là les inclusions seront toujours de la forme unique : use \nspc_root\nspc_sub\nscp...\Class. Le prix de la tranquilité : aimer les classes.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Inscription : juin 2003 Messages : 1 217 ![]() |
En fait c'est le pdo-myql qui n'était pas installé. Je croyait que cela se ferait automatiquement comme c'est le cas pour pdo-pgsql (postgres).
La question que je me pose c'est pourquoi j'avais pas de message d'erreur claire que l'absence des extensions pdo de mysql lorsque je met dans les includes des caractères non autorisées? Pourquoi avec les \ dans les includes (donc incorrecte) j'ai pas d'erreur sur mes pages???
__________________
Amicalement |
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Idriss NeumannConsultant en SSII et auditeur au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 3 795 ![]() |
Bonsoir.
J'ai déjà expliqué ça dans mon message précédant : ton level d'erreur est trop permissif et ne doit pas prendre en compte les warnings (c'est un warning que renvoit include* contrairement à la fonction require* qui renvoit une fatal error). Cela se configure dans ton php.ini (celui d'apache si tu exécute tes scripts via apache). Il n'en reste pas moins que ton code avec \ n'as pas le comportement souhaité ... tu ne pourrais pas faire de requête SQL avec ta variable PDO qui n'existerait pas. Un coup de debugger, de var_dump ou de print_r pourrait te le confirmer (il faut investiguer plus que ça, tu tire des conclusions beaucoup trop hâtives comme quand tu accuses l'OS ou ton include qui n'ont rien à voir avec l'erreur. Il ne faut jamais se fier au résultat apparant, c'est pour ça qu'on a des debuggers, des fonctions de debug comme var_dump, des tests unitaires, etc). @rawsrc : <troll>Le / fonctionne partout maintenant normalement (d'autant plus que je ne fait jamais de PHP pour une cible Windows et que je ne revient pas sur des versions PHP ante 5.3.5) </troll>Cordialement, Idriss |
|
00
|
Copyright © 2000-2013 - www.developpez.com