PHP : Commentaires monolignes ne fonctionnent plus

Discussion dans 'Administration d'un site Web' créé par 7804j, 10 Décembre 2011.

  1. 7804j
    7804j WRInaute discret
    Inscrit:
    20 Avril 2011
    Messages:
    167
    J'aime reçus:
    0
    Bonjour,

    Je viens récemment de me prendre un serveur dédié chez OVH et je suis actuellement en train de programmer un nouveau site. De ce fait, il est possible que j'aie mal configuré certaines choses car il s'agit de mon premier dédié.

    Mais en l'occurrence, mon problème est extrêmement bizarre : les commentaires monolignes ne fonctionnent plus... et me renvoient à chaque fois une erreur du type Parse error: syntax error, unexpected $end in /var/www/ma_page.php on line 1 quand ils sont placés dans un bloc d'instruction ou stoppent tout simplement l'exécution du reste du script s'ils se trouvent dans le corps principal

    En gros, ce bout de code ne fonctionne pas et renvoit une erreur :

    Code:
    <?php
    if(1==1)
    	{
    		//commentaire
    	}
    ?>
    
    Idem pour celui-ci :

    Code:
    <?php
    if(1==1)
    	{
    		#commentaire
    	}
    ?>
    
    En revanche, celui-ci fonctionne :

    Code:
    <?php
    if(1==1)
    	{
    		/*commentaire*/
    	}
    ?>
    
    Mais celui-ci stoppe le script sans renvoyer d'erreur :

    Code:
    <?php
    
    //Commentaire placé avant le bloc
    if(1==1)
    	{
    		echo 'test';
    	}
    ?>
    
    Quand je parle de bloc, il s'agit tout autant de conditions if que de boucles while, etc.

    Voilà, j'aime bien mon ami google mais il n'a pas voulu m'aider cette fois-ci... De plus, peu importe où se trouve le commentaire, l'erreur retournée est toujours la ligne 1.

    Comment une chose pareille serait possible ?

    Merci d'avance,

    7804j
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 786
    J'aime reçus:
    240
    Tu édites les fichiers PHP avec quel logiciel ? Quels sont les carriages return (CRLF ?) ?
     
  3. 7804j
    7804j WRInaute discret
    Inscrit:
    20 Avril 2011
    Messages:
    167
    J'aime reçus:
    0
    Là, avec Notepad++. Aucune idée pour les retours de chariot. Comment puis-je savoir de quels type ils sont ?
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 786
    J'aime reçus:
    240
    Dans notepad++ : preferences => New document => Format (Windows, Unix, Mac ?)
    Si tu ouvres ton fichier en SSH avec vi ou nano, il a l'air good (peut-être erreur lors du transfert FTP) ?
     
  5. Ehplod
    Ehplod WRInaute impliqué
    Inscrit:
    22 Octobre 2011
    Messages:
    615
    J'aime reçus:
    0
    Je ne pense pas à une erreur de transfert ou de carriages return, vu qu'il y a manifestement erreur sur le classique double slash et non sur le slach etoile.

    J'y connais rien en apache, mais je pari qu'on peut lui définir le caractère à prendre en compte comme commentaire (qu'il n'est pas imposé)... C'est peut-être là le bug.
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 786
    J'aime reçus:
    240
  7. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    pour infirmer ou confirmer que le problème du caractère de fin de ligne (\n, \n\r ou \r\n) n'entre pas en ligne de compte il faudrait tester un script comme ça :
    Code:
    <?php //commentaire ?>
    et comparer avec :
    Code:
    <?php 
    //commentaire 
    echo "blabla"; 
    ?>
    Si pas d'erreur de parse sur le premier script il faudrait approfondir cette histoire de caractère de fin de ligne.
    Perso je pensais a ça aussi.
     
  8. Ehplod
    Ehplod WRInaute impliqué
    Inscrit:
    22 Octobre 2011
    Messages:
    615
    J'aime reçus:
    0
    Ouais... pas apache, mais l'interpreteur. Zend ?

    On doit donc pourvoir dire que // sont ou ne sont pas des interpréteurs commentaire. Non ?
     
  9. 7804j
    7804j WRInaute discret
    Inscrit:
    20 Avril 2011
    Messages:
    167
    J'aime reçus:
    0
    Merci de vos réponses toutes très intéressantes. J'avais posté la même question sur le siteduzero et apparemment personne n'était en mesure de donner une hypothèse.

    Donc en effet, le problème venait des sauts de ligne. J'ai ouvert le document en ligne de commande et j'ai vu qu'il tenait sur une ligne complète ^^'

    Donc dans notepad++, c'est paramété en format "Windows" (j'ai le choix avec Windows, Mac et Unix). Est-ce que c'est dû à cela ? Est-ce qu'il me faudrait choisir Unix ?

    Dans mon ancien hébergement, en mutualisé (aussi sous Apache), je n'avais pas ce problème avec pourtant la même config du notepad. Est-ce qu'il faudrait que je configure Apache pour qu'il puisse lire le retour de chariot format windows ?
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 786
    J'aime reçus:
    240
    C'est le level au dessus ici :mrgreen:

    Ahhh j'avais bien deviné.

    Normalement avec format Windows ça fonctionne aussi. Tu peux essayer en UNIX. Mais je pense que ça viens de ton mode de transfert FTP (binary / ASCII).

    Même en ligne de commande tes retours chariots ne se sont pas affichés, le problème ne vient pas Apache.
     
  11. 7804j
    7804j WRInaute discret
    Inscrit:
    20 Avril 2011
    Messages:
    167
    J'aime reçus:
    0
    Ok, donc effectivement, j'utilise Filezilla et j'ai le choix entre binary, ASCII ou automatique. Je suis actuellement en automatique.

    Ce qui est bizarre, c'est que l'automatique n'ait pas l'air de fonctionner.

    Mais si vraiment le fichier était transféré en binary à la place de ASCII ou inversement, comment se fait-il qu'il n'y ait que des problèmes au niveau des sauts de ligne ? Le fichier en entier ne devrait-il pas être corrompu ? Ou aurais-je mal compris le fonctionnement ? Il me semble que si on transforme par exemple du binaire... en binaire, ça va pas le faire (donc par exemple 0110000101110111 en 00110000001100010011000100110000001100000011000000110000001100010011000000110001001100010011000100110000001100010011000100110001).

    Justement à ce propos, j'ai essayé de prendre des fichiers créés SANS le notepad++ et de les envoyer AUSSI avec filzilla, même config, même serveur et là, plus de problème. Ensuite, j'ai essayé d'éditer ces fichiers avec notepad++ et pas de problème non plus. Donc à priori, il s'agit uniquement du notepad++ dans le cas de NOUVEAUX fichiers.

    Je vais essayer de voir si je trouve qqch là-dessus demain :)
     
  12. 7804j
    7804j WRInaute discret
    Inscrit:
    20 Avril 2011
    Messages:
    167
    J'aime reçus:
    0
    Voilà, là solution était apparemment uniquement du côté de Notepad++. Il fallait modifier les sauts de ligne en format UNIX. Pour l'appliquer rétroactivement à un ancien document, il fallait aller dans Edition > Convertir les sauts de ligne > Unix (LF)

    Donc merci de votre aide, ça parait maintenant évident mais je n'y avais pas pensé :)
     
Chargement...
Similar Threads - PHP Commentaires monolignes Forum Date
Script PHP commentaires Développement d'un site Web ou d'une appli mobile 22 Décembre 2010
Identification et Commentaires en php Développement d'un site Web ou d'une appli mobile 8 Mars 2009
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
PHP : checkdnsrr (MX) et domaine yahoo.fr Développement d'un site Web ou d'une appli mobile 5 Septembre 2019
Migration site PHP vers Gatsby : quelques questions Problèmes de référencement spécifiques à vos sites 22 Août 2019
Rediriger sujet phpBB3 vers Vanilla 3 URL Rewriting et .htaccess 6 Août 2019
JS Ajax PHP e-MAIL Développement d'un site Web ou d'une appli mobile 17 Juin 2019
récupérer id en php sans lien Développement d'un site Web ou d'une appli mobile 25 Avril 2019
Autocomplete php avec 36000 résultats possible Développement d'un site Web ou d'une appli mobile 24 Mars 2019
Erreur PHP Fatal error: Allowed memory size of ... bytes exhausted Demandes d'avis et de conseils sur vos sites 23 Mars 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice