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:
    9 003
    J'aime reçus:
    284
    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:
    9 003
    J'aime reçus:
    284
    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:
    9 003
    J'aime reçus:
    284
  7. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 192
    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:
    9 003
    J'aime reçus:
    284
    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
PHP empêcher form onsubmit si formulaire invalide Développement d'un site Web ou d'une appli mobile 29 Juin 2020
Parser en php un fichier xml Développement d'un site Web ou d'une appli mobile 12 Juin 2020
UX sur Android (et iOS) : Le $_POST en php qui fait mal Développement d'un site Web ou d'une appli mobile 10 Juin 2020
formulaire de contact sans php Développement d'un site Web ou d'une appli mobile 5 Avril 2020
Ne pas mettre à jour forum Phpbb Administration d'un site Web 19 Février 2020
Phpbb et app.php et RSS ? Débuter en référencement 17 Février 2020
Title et meta déscription par PHP Référencement Google 20 Décembre 2019
Boucle PHP et référencement Rédaction web et référencement 13 Décembre 2019
Mettre à jour Php Administration d'un site Web 1 Décembre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice