Erreur 500 après mise à jour 12.0.2

Bonjour à tous,
Je viens de loin puisque j’avais une installation en « 3. quelque chose » qui m’a bien servi pendant des années!
J’ai décidé hier de faire la mise à jour, téléchargé nouvelle version, fait les sauvegardes, supprimé tous les répertoires sauf documents, réinjecté les fichiers nouvelle version puis le fichier conf sauvegardé et finalement mis le fichier install.lock dans documents.
pour info je suis sur un serveur dédié hébergé chez un prestataire, PHP est en 7.3
Toutes les mises à jour se sont bien passées sauf que maintenant j’ai accès à l’écran de connexion (bien qu’il soit bizarre car il prend toute la page), je mets les identifiants, puis erreur 500 « cette page n’est pas disponible pour le moment ».
Vu dans ce forum que page vide = erreur php donc j’ai été voir le log et effectivement il y a une erreur dans le fichier fonctions.lib.php, ligne 1
[26-Oct-2020 09:23:01] WARNING: [pool domaine.fr] child 12996 said into stderr: « NOTICE: PHP message: PHP Parse error: syntax error, unexpected ' »’ in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/core/lib/functions.lib.php(7210) : eval()'d code on line 1"
J’ai été voir le fichier et je suis incapable de dire si quelque chose ne fonctionne pas.
Voici la première page. Si quelqu’un pouvait m’indiquer le pourquoi du comment… Je serai redevable pendant un gros bout de temps!!! Option serait de réinstaller en 12.0.2, réinjecter le dump de la base de données et le fichier conf et répertoire documents. Mais bon si je pouvais éviter, ça serait bien.
Bonne journée!

<?php
/* Copyright (C) 2000-2007	Rodolphe Quiedeville		<[email protected]>
 * Copyright (C) 2003		Jean-Louis Bergamo			<[email protected]>
 * Copyright (C) 2004-2018	Laurent Destailleur			<[email protected]>
 * Copyright (C) 2004		Sebastien Di Cintio			<[email protected]>
 * Copyright (C) 2004		Benoit Mortier				<[email protected]>
 * Copyright (C) 2004		Christophe Combelles		<[email protected]>
 * Copyright (C) 2005-2019	Regis Houssin				<[email protected]>
 * Copyright (C) 2008		Raphael Bertrand (Resultic)	<[email protected]>
 * Copyright (C) 2010-2018	Juanjo Menent				<[email protected]>
 * Copyright (C) 2013		Cédric Salvador				<[email protected]>
 * Copyright (C) 2013-2017	Alexandre Spangaro			<[email protected]>
 * Copyright (C) 2014		Cédric GROSS				<[email protected]>
 * Copyright (C) 2014-2015	Marcos García				<[email protected]>
 * Copyright (C) 2015		Jean-François Ferry			<[email protected]>
 * Copyright (C) 2018-2020  Frédéric France             <[email protected]>
 * Copyright (C) 2019       Thibault Foucart            <[email protected]>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 * or see https://www.gnu.org/
 */

/**
 *	\file			htdocs/core/lib/functions.lib.php
 *	\brief			A set of functions for Dolibarr
 *					This file contains all frequently used functions.
 */

include_once DOL_DOCUMENT_ROOT.'/core/lib/json.lib.php';


/**
 * Return a DoliDB instance (database handler).
 *
 * @param   string	$type		Type of database (mysql, pgsql...)
 * @param	string	$host		Address of database server
 * @param	string	$user		Authorized username
 * @param	string	$pass		Password
 * @param	string	$name		Name of database
 * @param	int		$port		Port of database server
 * @return	DoliDB				A DoliDB instance
 */
function getDoliDBInstance($type, $host, $user, $pass, $name, $port)
{
	require_once DOL_DOCUMENT_ROOT."/core/db/".$type.'.class.php';

	$class = 'DoliDB'.ucfirst($type);
	$dolidb = new $class($type, $host, $user, $pass, $name, $port);
	return $dolidb;
}

/**
 * 	Get list of entity id to use.
 *
 * 	@param	string	$element		Current element
 *									'societe', 'socpeople', 'actioncomm', 'agenda', 'resource',
 *									'product', 'productprice', 'stock', 'bom', 'mo',
 *									'propal', 'supplier_proposal', 'invoice', 'supplier_invoice', 'payment_various',
 *									'categorie', 'bank_account', 'bank_account', 'adherent', 'user',
 *									'commande', 'supplier_order', 'expedition', 'intervention', 'survey',
 *									'contract', 'tax', 'expensereport', 'holiday', 'multicurrency', 'project',
 *									'email_template', 'event', 'donation'
 *									'c_paiement', 'c_payment_term', ...
 * 	@param	int		$shared			0=Return id of current entity only,
 * 									1=Return id of current entity + shared entities (default)
 *  @param	object	$currentobject	Current object if needed
 * 	@return	mixed					Entity id(s) to use ( eg. entity IN ('.getEntity(elementname).')' )
 */
function getEntity($element, $shared = 1, $currentobject = null)
{
	global $conf, $mc;

	if (is_object($mc))
	{
		return $mc->getEntity($element, $shared, $currentobject);
	}
	else
	{
		$out = '';
		$addzero = array('user', 'usergroup', 'c_email_templates', 'email_template', 'default_values');
		if (in_array($element, $addzero)) $out .= '0,';
		$out .= $conf->entity;
		return $out;

Bonjour,

Serait il possible d’avoir les quelques lignes avant et après dans les logs svp

Bien à vous
L.

Bonjour
Curieux ça semble être un simple warning.
Essayez de transférer une nouvelle fois les fichiers php en erreur.
Il doit y avoir autre chose dans les logs d’erreur
@+

Bonjour et merci pour vos réponses.
Trouvé ça si ça peut aider. Je ne sais pas trop de ce que ça veut dire… C’est tout ce que j’ai trouvé dans le log qui concerne ce domaine.

[25-Oct-2020 23:35:22] WARNING: [pool domaine.fr] child 27059 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:35:50] WARNING: [pool domaine.fr] child 27071 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:37:18] WARNING: [pool domaine.fr] child 27103 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:38:39] WARNING: [pool domaine.fr] child 27670 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:38:40] WARNING: [pool domaine.fr] child 27670 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:38:41] WARNING: [pool domaine.fr] child 27670 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:41:14] WARNING: [pool domaine.fr] child 27802 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:41:16] WARNING: [pool domaine.fr] child 27802 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:41:17] WARNING: [pool domaine.fr] child 27802 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"
[25-Oct-2020 23:44:47] WARNING: [pool domaine.fr] child 27954 said into stderr: "NOTICE: PHP message: PHP Fatal error:  'break' not in the 'loop' or 'switch' context in /var/www/vhosts/domaine.fr/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009"

Bonjour,

bizarre, pouvez vous retelecharger la version en question et rédeployer les sources en étant sure de remplacer par les nouvelles ?

Parce que sur la version 12.0.2, je ne vois pas de break à cette ligne là. https://github.com/Dolibarr/dolibarr/blob/dde83c8fcc03bbb1f5ee09181197dd7fd88f8010/htdocs/includes/adodbtime/adodb-time.inc.php#L1009

Bonjour et merci pour votre réponse.
Désolé, je suis un utilisateur éclairé mais sans plus donc que veut dire retélécharger la version en question? Parle t on de la 3 ou de la 12? Ensuite « redéployer les sources »? Réinstaller le programme téléchargé?

Bonjour,

Comment avez vous mis votre site en ligne?

Bien à vous
L.

Bonjour et merci pour votre réponse.
Le site est hébergé sur un serveur dédié chez un prestataire. Un répertoire dédié à Dolibarr nommé crm4 a été créé dans lequel Dolibarr était installé. Je rappelle que cette instance 3.x de Dolibarr existe depuis des années et est utilisée sans aucun problème.
Donc j’ai téléchargé la version 12.0.2, décompressé les fichiers sur ma machine, supprimé tout de l’ancienne version sauf documents et conf, téléversé les nouveaux fichiers puis procédé à la mise à jour de 3.x à 12.0.2 en passant par les différentes étapes (3 à 4, 4 à 5 etc.). A chaque fois aucun problème signalé par le programme d’installation.

Bonjour,

J’ai exactement le même problème avec la version 12.0.3
J’ai téléchargé la source sur mon PC, puis je l’ai uploadé sur le répertoire cible via filezilla en écrasant les fichiers d’origine. J’ai supprimé le fichier install.lock. J’ai fait un chown pour donner aux nouveaux fichiers le bon propriétaire. Et après erreur 500

Bonjour,

Encore une fois Erreur 500 c’est une erreur PHP, vérifiez les logs de votre hébergeur.

J’ai réussi à faire la mise à jour en faisant tout en ligne de commande (wget, unzip, cp, rm).
Je supprime l’étape filezilla, où il doit se passer un truc pas catholique.

Du coup j’ai fait un script pour mettre à jour touts mes instances. Ca fonctionne nikel

J’ai Dolibarr installé sur mon Nas Asustor avec MariaDB, et depuis l’installation de la version 12.03, j’ai l’erreur 500. Comme je n’ai changé aucun log dans le PHP, @ksar, peux tu me dire quel logs dois-je vérifier pour éviter cette erreur ?

Bonjour,
Ceci est la seule erreur trouvée :
Parse error: syntax error, unexpected ‹ " › in /var/www/vhosts/domaine.com/httpdocs/crm4/htdocs/core/lib/functions.lib.php(7210) : eval()'d code on line 1

Bonjour,
Cette indication est largement insuffisante pour pouvoir aider.
La fonction reçoit une expression à évaluer, mais c’est le contenu de cette expression qu’il faudrait pouvoir connaître pour l’analyser.
On ne sais pas ce qui conduit à voir cette erreur. Quelle URL est chargée ?
N’y a-t-il pas une trace de ce qui précède ?
Il est possible de retrouver l’expression évaluée en supprimant // de la ligne 7202.

Bonjour et merci pour cette réponse.
Je n’ai pas compris le « supprimer // de la ligne 7202 ». Quel fichier?
Ce que je ne comprends pas c’est que j’ai 3 instances Dolibarr qui tournent dans des versions différentes (6.x, 12.x) sans problème (sauf bien sûr celle que je viens de mettre à jour) sur le même domaine dans des répertoires différents donc les paramètres PHP devraient être les mêmes pour les 3. 2 fonctionnent, la 3ème non.
Je vais essayer de joindre les logs dans un prochain post.
Merci pour votre aide.

Je parlais du fichier où a lieu l’erreur.
De plus, j’ai mis le lien vers la version de github.

Désolé, je n’avais pas vu le lien…
En attendant, je me suis dit que si je réinstallais la version d’origine (3.x), je pourrais facilement réintégrer la sauvegarde de la base. Et bien non! Je n’ai même pas la possibilité d’installer quoi que ce soit. Page blanche. Donc j’ai été voir les erreurs PHP dans les logs et voici ce que j’ai :
[01-Dec-2020 16:38:40] WARNING: [pool domaine.com] child 16144 said into stderr: « NOTICE: PHP message: PHP Fatal error: ‹ break › not in the ‹ loop › or ‹ switch › context in /var/www/vhosts/domaine.com/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009 »
[01-Dec-2020 16:21:46] NOTICE: using inherited socket fd=9, « /var/www/vhosts/system/domaine.com/php-fpm.sock »
[01-Dec-2020 16:22:04] WARNING: [pool domaine.com] child 15416 said into stderr: « NOTICE: PHP message: PHP Fatal error: ‹ break › not in the ‹ loop › or ‹ switch › context in /var/www/vhosts/domaine.com/httpdocs/crm4/htdocs/includes/adodbtime/adodb-time.inc.php on line 1009 »

En allant voir ça donne ça :
$dow = adodb_dow($year,$month,$day);

Cette erreur est probablement due au fait que le code exécuté n’est pas compatible avec PHP 7, pour la version d’origine. Elle a dû être corrigée dans les versions suivantes.

Pour être plus précis, l’instruction à décommenter est
print $s."<br>\n"; qui une instruction de débogage.

La résolution de l’erreur est simple : faire la mis à jour vers dolibarr 12.0.4 et tout rentre dans l’ordre !