Que des "Unexcepted $end" après MAJ PHP de 5.1.2 à

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Que des "Unexcepted $end" après MAJ PHP de 5.1.2 à

par mere-teresa » 22 mai 2006, 17:49

A tes shorts tags ? Au fait que tu concatènes avec des virgules ?

par PedroPHP » 22 mai 2006, 16:54

Pas nécessairement mal configuré. La nouvelle confiuration est plus stricte et le display_error est réglé sur E_ALL alors qu'avant il était peut-être plus laxiste en masquant les notices et/ou les warnings. Il faut laisse E_ALL seulement et toutes les erreurs vont être affichée: en mode développement, c'est impératif. En corrigeant tout convenablement, tu auras un site qui ne bronchera pas du tout lors de la mise en ligne sur un serveur de production.
En tout cas j'ai pas mal de difficultés à la faire bien marcher cette version 5.1.4:
Je fais tourner, sur mon site, un petit éditeur de codes barres qui fonctionnait très bien avant. Voici la ligne de code qui l'appelle:

Code : Tout sélectionner

<? echo '<IMG src="fonction/pi_barcode.php?type=C128&code=',$code,'&height=40&width=20&readable=Y"> '; ?>

Le truc marchait très bien avant. Là j'ai une croix rouge à la place de l'image. Personne ne saurait d'où ça peut venir? Encore une fois, je suis sûr que c'est du à la MAJ à PHP 5.1.4, vu que ça marchait avant.

par Cyrano » 22 mai 2006, 15:50

Pas nécessairement mal configuré. La nouvelle confiuration est plus stricte et le display_error est réglé sur E_ALL alors qu'avant il était peut-être plus laxiste en masquant les notices et/ou les warnings. Il faut laisse E_ALL seulement et toutes les erreurs vont être affichée: en mode développement, c'est impératif. En corrigeant tout convenablement, tu auras un site qui ne bronchera pas du tout lors de la mise en ligne sur un serveur de production.

par PedroPHP » 22 mai 2006, 15:45

tu a une sortie a la ligne 15 de ton fichier html
voir la faq
Ok, merci de vos réponses. C'était des erreurs dues à un php.ini mal configuré. Tout marche maintenant.

par jeff » 22 mai 2006, 15:35

tu a une sortie a la ligne 15 de ton fichier html
voir la faq

Ok pour celle la...mais y en a une autre

par PedroPHP » 22 mai 2006, 15:33

Il y a une autre possibilité : la directive shor_open_tag doit être à OFF alors qu'elle était à ON dans ta précédente configuration: mais du coup, il faut impérativement mettre "<?php" et non plus seulement "<?"
<?php
         /* Test du fonctionnement de la requête  d'insertion des paramètres de connexion de l'utilisateur */
         if(mysql_query($requete_insert)==true)
         {
              $message="Session ouverte";
              ?>
              <FORM name="login" action="Accueil.php" method="GET">
              <INPUT TYPE="hidden" size="10" value="<?php echo $message ?>" name="message" readonly />
              </FORM>
              <script type="text/javascript">
                      login.submit();
              </script>
              <?php
              exit;
         }
         else {
              //Si on a un pb d'insertion...
              echo "Problème d'insertion".mysql_errno().mysql_error();exit;
         }
?>
Ok, c'est corrigé et ça marche. Y a aussi celle là en fait (rien à voir avec la première et avec la modif dans php.ini)

Warning: Cannot modify header information - headers already sent by (output started at D:\www\gma\connexion.php:15) in D:\www\gma\login.php on line 114

J'ai rien changé au code et avant mon truc marché très bien. Je pense que le plus simple est que je joigne mon fichier php...à moins que vous ne sachiez d'où vient l'erreur...
Qu'était pas signalée avant (rien à voir avec

par Cyrano » 22 mai 2006, 15:10

Il y a une autre possibilité : la directive shor_open_tag doit être à OFF alors qu'elle était à ON dans ta précédente configuration: mais du coup, il faut impérativement mettre "<?php" et non plus seulement "<?"
<?php
         /* Test du fonctionnement de la requête  d'insertion des paramètres de connexion de l'utilisateur */
         if(mysql_query($requete_insert)==true)
         {
              $message="Session ouverte";
              ?>
              <FORM name="login" action="Accueil.php" method="GET">
              <INPUT TYPE="hidden" size="10" value="<?php echo $message ?>" name="message" readonly />
              </FORM>
              <script type="text/javascript">
                      login.submit();
              </script>
              <?php
              exit;
         }
         else {
              //Si on a un pb d'insertion...
              echo "Problème d'insertion".mysql_errno().mysql_error();exit;
         }
?>

par PedroPHP » 22 mai 2006, 15:06

Les Warnings sont des erreurs de codage, quand tu fais des choses approximatives.
Les parse error sont des erreurs blocantes, qui tiennent à des variables inexistantes, par exemple.

Si cela a changé après le passage de PHP4 à 5, n'est-ce pas tout simplement que tu as ton REGISTER_GLOBALS à Off avec Wamp alors qu'il était à ON avec ta config précédente ?
Ben j'ai pensé à ça aussi, mais après vérification, j'ai jamais passé REGISTER_GLOBALS à On. En fait j'ai toujours utilisé PHP5. Je suis simplement passé de la version 5.1.2 à la version 5.1.4

par PedroPHP » 22 mai 2006, 15:03

Il faudrait un exemple réel de ton code à la place.
Ok, en voici un:

Code : Tout sélectionner

//Test du fonctionnement de la requête d'insertion des paramètres de connexion de l'utilisateur if(mysql_query($requete_insert)==true) { $message="Session ouverte"; ?> <FORM name="login" action="Accueil.php" method="GET"> <INPUT TYPE="hidden" size="10" value="<?echo $message?>" name="message" readonly /> </FORM> <script type="text/javascript"> login.submit(); </script> <? exit; } else { //Si on a un pb d'insertion... echo "Problème d'insertion".mysql_errno().mysql_error();exit; }
Et voici l'erreur renvoyée:

Parse error: parse error, unexpected $end in D:\www\gma\login.php on line 138

par mere-teresa » 22 mai 2006, 15:03

Les Warnings sont des erreurs de codage, quand tu fais des choses approximatives.
Les parse error sont des erreurs blocantes, qui tiennent à des variables inexistantes, par exemple.

Si cela a changé après le passage de PHP4 à 5, n'est-ce pas tout simplement que tu as ton REGISTER_GLOBALS à Off avec Wamp alors qu'il était à ON avec ta config précédente ?

par Cyrano » 22 mai 2006, 14:59

Il faudrait un exemple réel de ton code à la place.

Que des "Unexcepted $end" après MAJ PHP de 5.1.2 à

par PedroPHP » 22 mai 2006, 14:53

Bonjour,

J'avais PHP 5.1.2 et je viens d'installer la dernière version de WAMP5 (1.6.3). Cette version installe automatiquement PHP 5.1.4. Je dois avoir un pb de php.ini parce que j'ai plein de "parse error" et de warnings pour des trucs qui marchaient avant.

L'erreur la plus embêtante est celle-ci:

Code : Tout sélectionner

<?php if (condition) { ?> (code en HMTL et/ou en JS) <? } ?>
En gros je peux plus intercaler du HTML ou du JS entre dans un if en PHP. Ce qui est très embêtant vu que mon site est basé sur ce principe.

Au besoin, je peux envoyer par mail mon php.ini.

Merci de votre aide.