Parse error avec wamp 2.5 et pas sur ovh!

Fermé
t21 - 24 nov. 2015 à 10:32
 Utilisateur anonyme - 24 nov. 2015 à 11:53
Bonjour,

J'ai un site wordpress sur ovh (avec php 5.4) qui est ok.
J'ai une copie exacte de ce site en local sur wamp 2.5 (et php 5.5).
Etrangement en local, mon url sur la page d'acceuil me renvoie l'erreur

Parse error: syntax error, unexpected '}' in C:\wamp\www\xxx\wp-content\plugins\MyWidget\widget.php on line 54

Il s'agit du dév d'un widget perso qui marche sans souci chez ovh.
En local, j'ai créé dans www un .htaccess avec
SetEnv PHP_VER 5_4
et également dans php.ini de wamp, j'ai positionné les paramètres
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off

mais sans plus de résultat.
Je ne sais plus quoi faire.
Pour moi, il n'y a pas d'erreur php : le } est bien présent et donc syntaxiquement l'erreur n'est pas justifiée.

Votre aide est la bienvenue.
Merci par avance.
Théo.
A voir également:

2 réponses

La prochaine fois que tu postes du code, s'il te plaît, utilise les balises de code qui permettent la coloration syntaxique. (petite flèche à côté du <> en haut à droite quand tu rédiges un message).

Pour expliquer ton problème :
En local dans wamp, la variable de configuration short_open_tag est inactive.
Donc la balise courte <? n'est pas prise comme la balise du PHP.
Donc tout le début de ton code est ignoré.
PHP commence l'analyse après la balise complète <?php et tombe tout de suite sur ton } qui, bien sûr, est inattendu.
Moralité : toujours utiliser la balise complète <?php, qui est correcte dans tous les cas, elle.
2
Ben bravo à toi. C'était bien ça. Merci encore car je n'aurai jamais trouvé (d'ailleurs je ne connaissait pas short_open_tag).
Merci.
0
Utilisateur anonyme > t21
24 nov. 2015 à 11:53
De rien :)
0
Bonjour

il n'y a pas d'erreur php : le } est bien présent et donc syntaxiquement l'erreur n'est pas justifiée.
Le message ne dit pas que le } est absent, il dit qu'il est inattendu.
Et jusqu'à présent, je n'ai jamais vu PHP afficher une erreur non justifiée.

Es-tu bien sûr que le code que tu regardes en local est le même que celui qu'il y a chez OVH ?

Peux-tu nous montrer ce code ?

Au passage, essayer de cacher les erreurs en local (dans wamp) est une très très mauvaise idée. Au contraire, il faut en afficher un maximum.
0
Oui sur et certain du code: je l'ai recopié en local depuis ovh via ftp.

Voici mon code:

<?
/*
Plugin Name: WidgetBus
Description: Widget de recherche de vols
Author: moi
Version: 1.0
  • /


class WidgetBus extends WP_Widget {

/**
  • Constructeur de la classe
  • /

function __construct() {
parent::__construct(
// ID du widget (on peut mettre "false")
'WidgetBus',
// Nom du widget dans le backoffice
'Widget de recherche de bus',
// Description dans le backoffice
array('description'=>'Widget de recherche de bus'),
// Largeur en px dans le backoffice
array('width'=>'100%'));
}

/**
  • Affichage du widget en Frontoffice

*
  • @see WP_Widget::widget()

*
  • @param array $args Arguments du Widget
  • @param array $instance Données sauvegardées en backoffice
  • /

public function widget( $args, $instance ) {
// Extraction des paramètres du widget
extract( $args );

// Récupération des paramètres
$title = $instance['title'];
$description= $instance['description'];

echo $before_widget;
if ( ! empty( $title ) )
echo $before_title . $title . $after_title;

?>
<iframe style="border: 0; height: 300px; width: 100%;" src="http://www.comparabus.com/fr/widget/iframe" width="300" height="150"></iframe>
<br />
<?php

// echo $description;

//echo $after_widget;
}

/**
  • Mise à jour des données sauvegardées en backoffice

*
  • @see WP_Widget::update()

*
  • @param array $new_instance Données brutes du formulaire du backoffice
  • @param array $old_instance Données précédentes

*
  • @return array Données filtrées à sauvegarder
  • /

public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = strip_tags( $new_instance['title'] );
$instance['description'] = strip_tags( $new_instance['description'] );

return $instance;
}

/**
  • Formulaire du backoffice

*
  • @see WP_Widget::form()

*
  • @param array $instance Données enregistrées
  • /

public function form( $instance ) {
if ( isset( $instance['title'] ) ) {
$title = $instance['title'];
}
else {
$title = "mon titre";
}

$description = $instance['description'];
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>">
Mon exemple de titre
</label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>"
name="<?php echo $this->get_field_name('title'); ?>" type="text"
value="<?php echo esc_attr($title); ?>" />

<label for="<?php echo $this->get_field_id( 'description' ); ?>">
Mon exemple de description
</label>
<input class="widefat" id="<?php echo $this->get_field_id('description'); ?>"
name="<?php echo $this->get_field_name('description'); ?>" type="text"
value="<?php echo esc_attr($description); ?>" />
</p>
<?php
}

} // class myWidget

add_action( 'widgets_init', create_function( '', 'return register_widget( "WidgetBus" );' ) );

?>

J'ai 7 { et 7}. Le compte est bon!
Merci à toi.
0