[RESOLU] Comprendre un bug dans un prog. PHP

Petit nouveau ! | 3 Messages

16 juin 2015, 14:59

Bonjour,

Je suis amené à effectuer des mises à jour de plusieurs forums et wikis suite à l'abandon par OVH du support de PHP 4. Autant dire, je galère, tant les procédures de mises à jour des fournisseurs de ces programmes sont tout sauf robustes et simples.

En l'occurrence, je dois mettre à jour plusieurs forums PHPBB. Or dans le programme final mettant à jour les structures, les tables et tutti quanti, il y a un bug qui me bloque.

J'ai bien entendu interrogé sur leur forum, mais personne ne me répond, ni même n'émet d'hypothèse quant à la compréhension de l'erreur générée. Voici le message d'erreur que j'obtiens :

Code : Tout sélectionner

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/.../forum/phpBB3/install/database_update.php on line 57 Parse error: syntax error, unexpected T_STRING in /home/.../www/forum/phpBB3/install/database_update.php on line 57
correspondant à cette ligne de programme :

Code : Tout sélectionner

$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
Ma question, béotienne, est la suivante :
Que cela peut-il signifier ? Une erreur de syntaxe de la commande elle-même? Une erreur de traitement d'une chaîne de caractères? Et ne pourrait-on pas insérer, si c'est ce dernier cas, une ligne d'exception qui ne ferait pas sauter toute la procédure?

Merci par avance à tous ceux qui pourraient m'apporter quelque éclairage et... peut-être une solution...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 juin 2015, 15:04

Bonjour,

Je ne connais pas particulière phpbb, mais c'est le "\" qui semble lui déplaire. "\phpbb\class_loader" est le chemin vers le class loader de phpbb, mais j'aurais tendance à penser que pour l'instancier dans ton code la syntaxe devrait être simplement :
$phpbb_class_loader = new class_loader( ... );
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 juin 2015, 15:19

Bonjour,

As-tu vérifié que la version de PHP que tu utilises est compatible avec la version de phpBB que tu essayes d'installer ?

Pour phpBB 3.1 il faut au minimum PHP 5.3.3 sur ton serveur
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

16 juin 2015, 15:35

Je ne pense pas que l'erreur vienne de là car on trouve plusieurs déclarations "similaires" dans le programme. Par ex. deux lignes plus loin, on a :

Code : Tout sélectionner

$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx); extract($phpbb_config_php_file->get_all());
Par contre, il n'y a pas de répertoire supérieur /phpbb/ dans l'arborescence, mais /phpBB3/ *
Serait-ce alors une erreur d'adresse de chemin ? Mais cela m'étonne qu'un tel bug général pourrait subsister dans un programme aussi important, vu que des mises à jour de forums liées au retrait de support de PHP4 par OVH, il doit y en avoir des centaines depuis quelques jours...

@Arthur : OVH préconise et supporte désormais systématiquement le PHP 5.6. Mais, ils indiquent d'inclure en racine de site un .ovhconfig avec les commandes :
app.engine=php
app.engine.version=5.6
http.firewall=none
environment=production

Je pensais le faire à l'issue de la mise à jour. Devrais-je alors le faire, avant finalisation de celle-ci ?

*après vérification, il y a bien un sous-répertoire /phpbb/ avec tous les fichiers répertoriés. Donc ce ne doit pas être un problème strict d'adressage.

** Est-ce que justement alors, les syntaxes d'adressage du type "new \phpbb\config_php" (avec slash en dur) ne seraient-elles pas des conventions désormais légales sous PHP 5.4 et +, alors qu'elles ne l'étaient pas sous PHP 5.2 et antérieures ?

Avatar du membre
Mammouth du PHP | 1609 Messages

16 juin 2015, 16:43

Salut, il me parait assez clair que tu dois être sur une version de php qui n'autorise pas l'utilisation des espaces de noms (introduits en 5.3.0).
http://php.net/manual/fr/language.names ... ionale.php
Développeur web depuis + de 20 ans

Petit nouveau ! | 3 Messages

16 juin 2015, 16:54

A priori, en interrogeant un module info.php, cela m'affiche "PHP Version 5.2.17". Donc, inférieure à PHP 5.3
Je vais essayer d'instancier une déclaration pour PHP 5.5 (voire 5.6) en racine du site, puis relancer derrière. Espérons que cela n'est que ça.
Merci en tout cas pour la piste, qui semble assez cohérente avec le souci rencontré. :)

=======
YEAH ! çà marche. =D> Merci vraiment à vous tous. Comme quoi, parfois cela tient à peu de choses. Mais cela montre aussi que, bien souvent, les programmeurs et ceux qui rédigent les procédures de mises à jour ont du mal à imaginer que ce sont les choses les plus basiques qui sont souvent celles qui créent le plus de difficultés.
Merci encore. :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 juin 2015, 22:10

Avec plaisir :)
Quand tout le reste a échoué, lisez le mode d'emploi...