Retour chariot : OSX, Linux , CR, CR LF...

Retour chariot : OSX, Linux , CR, CR LF... - PHP - Programmation

Marsh Posté le 08-04-2009 à 00:31:52    

Bonjour,
Plutôt débutant en PHP j’ai un petit souci à résoudre
Je créé quelques Pages en PHP avec l’éditeur de texte smultron sous macosx. J’ouvre ensuite ces pages avec mon serveur Apache (Wamp ou serveur apache intégré à macosx) et la je me rend compte que les « include » ne fonctionnent pas.
Si j’upload ces pages sur mon serveur distant sous linux aucun problème, mes includes fonctionnent.
Apres recherche Je soupçonne les retours chariot d’être en cause, pourtant OSX et linux utilise le même type de retour chariot (LF) contrairement à Windows (CR LF).
 
Lorsque j’ai créé mes pages smultron était en automatique au niveau de la gestion du retour chariot. Le soucis c’est que je ne comprends pas vraiment le fonctionnement de ces retours chariots, visuellement je ne vois rien dans le code, ca doit donc agir ailleurs mais ou ?
Tout fonctionne sur le serveur distant, mais pour faire des tests c’est bien plus sympa en local.. Surtout quand je n’ai pas le net…
Si vous aviez une solution…

Reply

Marsh Posté le 08-04-2009 à 00:31:52   

Reply

Marsh Posté le 08-04-2009 à 13:18:34    

vertigo77 a écrit :

Bonjour,
Plutôt débutant en PHP j’ai un petit souci à résoudre
Je créé quelques Pages en PHP avec l’éditeur de texte smultron sous macosx. J’ouvre ensuite ces pages avec mon serveur Apache (Wamp ou serveur apache intégré à macosx) et la je me rend compte que les « include » ne fonctionnent pas.


En clair ?
- Message d'erreur ?
- Page blanche ?
- Résultat non conforme aux attentes ?
- Autre (préciser) ?
 
Tu as essayé avec un include sur un fichier qui contiendrait juste un truc genre echo "OK"; ?

Reply

Marsh Posté le 08-04-2009 à 13:38:35    

Souvent les problèmes d'include sont dus aux chemins des fichiers. Pour rappel, il est recommandé d'tuliser des chemins relatifs plutôt que des chemins absolus, car la racine n'est pas celle du disque, mais celle qui est indiquée dans le fichier de configuration d'Apache.

Reply

Marsh Posté le 08-04-2009 à 19:17:19    

Pas de message d'erreur, simplement mon menu que j'appelle en include n'apparait pas (il apparait par contre sur mon serveur unix)
 
Ma page je j'appelle en include se trouve dans le même dossier  donc pas de problème de lien.

Reply

Marsh Posté le 09-04-2009 à 09:31:34    

Si c'est un problème de retour à la ligne, alors il faudrait essayer avec un autre fichier ayant des retours à la ligne différents, comme cela on serait fixé. Le transfert de fichier se fait habituellement par FTP, et il faut choisir le mode Ascii au lieu du mode binaire quand on transfert un fichier comme un include qui devrait contenir du texte ordinaire.
 
Peut-être que le fichier d'include inclus d'autres includes, ou a besoin de certaines ressources.
 
Une cause d'erreur qui n'a pas encore été citée, est la confusion possible entre majuscules et minuscules. Unix est très stricte sur ce sujet, alors que Windows ne l'ai pas toujours.

Reply

Marsh Posté le 09-04-2009 à 09:54:43    

macgawel a écrit :

Tu as essayé avec un include sur un fichier qui contiendrait juste un truc genre echo "OK"; ?


 :??:  
 
+1 pour le nommage des fichiers.
Dans l'idéal : utiliser un nom de fichier composé uniquement de caractères alphanumériques (sans accents) et des signes - et _

Reply

Marsh Posté le 09-04-2009 à 23:26:15    

et attention aussi au sens des "/" dans le nom de fichier à inclure, il faut mettre des "/" et non des "\", bien que windows mette des "\"

Reply

Marsh Posté le 12-05-2009 à 16:09:07    

Un mois après je n'ai toujours pas réussit à faire fonctionner les includes sous OSX
 
Pourtant je ne fais rien de particulier et je ne vais pas chercher le fichier dans un autre répertoire (donc pas de probleme de slash )? pas d'accent non plus i caracteres speciaux
 
<?php include('menu.php'); ?>
 
 

Reply

Marsh Posté le 12-05-2009 à 16:22:31    

Je n'ai jamais essayé avec "?>" juste à la fin de la ligne d'include. Peut-être que ça marche, mais je me dit que "?>" indique la fin d'un bloc PHP et que, peut-être, je n'en suis pas sûr, le contenu de l'include serait limité par la fin du bloc. En tous cas, il me parait plus naturel de ne pas séparer, par "?>", la ligne d'include des autres lignes de code PHP.

Reply

Marsh Posté le 12-05-2009 à 17:17:21    

ITT : fail
 

vertigo77 a écrit :

Apres recherche Je soupçonne les retours chariot d’être en cause, pourtant OSX et linux utilise le même type de retour chariot (LF) contrairement à Windows (CR LF).


Les retours chariot changent rien.
 

olivthill a écrit :

Pour rappel, il est recommandé d'tuliser des chemins relatifs plutôt que des chemins absolus


Surtout pas, à cause du bordel de l'include path. Utiliser des chemins absolus, en utilisant une constante par exemple genre ROOT_PATH ou je sais pas
 

olivthill a écrit :

Le transfert de fichier se fait habituellement par FTP, et il faut choisir le mode Ascii au lieu du mode binaire quand on transfert un fichier comme un include qui devrait contenir du texte ordinaire.


Moi je transfert tout en binaire. Retours chariots "\n" y compris sous windows, et pas de conversion louche
 

tomsoft a écrit :

et attention aussi au sens des "/" dans le nom de fichier à inclure, il faut mettre des "/" et non des "\", bien que windows mette des "\"


On peut utiliser DIRECTORY_SEPARATOR pour être au top
 

vertigo77 a écrit :

Un mois après je n'ai toujours pas réussit à faire fonctionner les includes sous OSX
 
Pourtant je ne fais rien de particulier et je ne vais pas chercher le fichier dans un autre répertoire (donc pas de probleme de slash )? pas d'accent non plus i caracteres speciaux
 
<?php include('menu.php'); ?>


Là il manque surtout un truc, c'est l'affichage des erreurs. Fout un E_ALL histoire de voir.
 
Ou mieux, dégage la fonction "include" de merde et utilise require. C'est pareil, mais ça lance une vraie erreure fatale (pas un warning de chiotte).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed