Dans l'interface d'administration de la version On-Premise de Bitrix24, vous avez peut-être remarqué une telle notification :
Que signifie cette erreur
La version 7.x est obsolète et n'est plus pris en charge, et aucun correctif fonctionnel ou de sécurité n'est publié pour celui-ci. L'utilisation de versions PHP inférieures à 8 est fortement déconseillée.
Vous ne pourrez pas installer de mises à jour pour les versions On-Premise de Bitrix24 afin de corriger les erreurs et d'obtenir de nouvelles fonctionnalités tant que vous n'aurez pas mis à jour PHP vers la version minimale 8.1 dans votre environnement de serveur.
Que faire
Vous devez planifier la mise à niveau de PHP vers la version 8.1 le plus tôt possible.
La mise à jour de la version PHP doit se faire par étapes. Pour cela faire, contactez votre administrateur système ou le support technique de votre hébergement.
-
Assurez-vous de sauvegarder votre installation. Il peut s'agir soit d'une copie de sauvegarde utilisant le produit, soit du serveur entier, par exemple une machine virtuelle VMBitrix.
-
Mettez à jour le noyau et tous les modules du produit vers les dernières versions disponibles dans la section Settings - Marketplace - Platform Update.
-
Mettez à jour toutes les solutions tierces du Marketplace vers les dernières versions disponibles dans la section Settings - Marketplace - Solution Update.
-
Mettez à jour la version PHP vers 8.1 sur votre serveur.
Si vous utilisez une machine virtuelle VMBitrix, vous pouvez mettre à jour PHP via le menu VMBitrix : 1. Manage servers in the pool - 8. Update PHP and MySQL. Lire la suite dans un cours séparé. - Vérifiez et installez à nouveau toutes les mises à jour de plateforme et de solution disponibles à partir du Marketplace.
Où vous devez vous référer en cas d'erreur lors de la mise à niveau de PHP vers 8.x
-
Si après la mise à jour de PHP, il y a des erreurs dans le travail des modules standard de la version On-Premise de Bitrix24, contactez Support24.
Aussi, pour les modules de la Marketplace dont les noms contiennent
bitrix.*
, vous devez contacter Support24, par exemple :bitrix.eshop bitrix.sitecommunity bitrix.sitecorporate bitrix.siteinfoportal bitrix.sitepersonal bitrix.learningtemplates
-
Pour les erreurs dans les modules tiers de Marketplace, contactez les développeurs du module, leurs contacts sont répertoriés sur la page de ce module dans l'onglet « Support ».
Exemples d'erreurs courantes et leurs solutions
Causes possibles des erreurs après la mise à niveau vers PHP 8.x :
- Avant de passer à PHP 8.x le noyau et tous les modules du produit n'ont pas été mis à jour vers les dernières versions disponibles dans la section Settings - Marketplace - Platform Update.
- Avant de passer à PHP 8.x, les mises à jour de solutions tierces (elles ont un point dans leur nom) n'étaient pas installées sur la page Marketplace - Solution Update.
- Le développeur n'a pas mis à jour le module pour prendre en charge PHP 8.
Étapes de base pour corriger les erreurs après la mise à niveau de PHP vers 8.x :
- Revenez à la version précédente de PHP 7.x lorsque tout a fonctionné, mettez à jour les composants du système et les modules tiers, puis mettez à jour la version PHP à 8.H.
- Si les actions précédentes n'ont pas corrigé les erreurs, contactez le développeur du module - voir la section ci-dessus Où vous devez vous référer en cas d'erreur.
- Désactivez temporairement le module avec une erreur en le déplaçant hors du répertoire
/bitrix/modules
. - Supprimez la solution tierce avec erreur.
Il convient de noter que les exemples ne fournissent que des solutions d'erreur pour un module spécifique. Chaque erreur doit être traitée individuellement par le développeur.
[Ux11] Error in the "#MODULE#" module description. Cannot connect the update server. [Ux11] Error in the "#MODULE#" module description.
L'erreur peut apparaître après la mise à niveau de la version PHP vers 8.1. Le site fonctionne, mais vous ne pouvez pas installer ou mettre à jour d'autres solutions tant que l'erreur persiste.
Solution au problème :
La correction dans le cas général sera la suivante : dans le fichier /bitrix/modules/<nom.module>/install/index.php
code :
function <nom.module>()doit être remplacé par :
function __construct()
The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.
Solution au problème :
Connectez-vous via FTP/SFTP ou accédez au panneau d'hébergement, activez la sortie d'erreur dans le fichier /bitrix/.settings.php
:
'debug' => true,
Après cela, le texte d'erreur sera affiché sur le site :
Non-static method Super\Functions\CSuperModRep::checkBack() cannot be called statically (0) /home/bitrix/modules/super.mod/lib/functions/CSuperModRep.php:52 #0: Super\Functions\CSuperModRep::checkRepActive() /home/bitrix/modules/super.mod/classes/general/CModEvents.php:1621 #1: CModEvents::OnPageStartHandler() /home/bitrix/modules/main/classes/general/module.php:480 #2: ExecuteModuleEventEx(array) /home/bitrix/modules/main/include.php:163 #3: require_once(string) /home/bitrix/modules/main/include/prolog_before.php:14 #4: require_once(string) /home/bitrix/modules/main/include/prolog.php:10 #5: require_once(string) /home/bitrix/header.php:1 #6: require(string) /home/index.php:1
L'exemple montre que la méthode tierce CSuperModRep::checkBack()
de la solution super.mod génère une erreur.
Le correctif dans le cas général sera le suivant : dans le code checkBack()
il faut déclarer correctement la fonction statique :
function checkBack()doit être remplacé par :
public static function checkBack()
PHP Fatal error: $GLOBALS can only be modified using the $GLOBALS[$name] = $value syntax in /www/bitrix/modules/main/tools.php
Cette erreur peut apparaître après la mise à niveau de PHP vers 8.x si toutes les mises à jour de plateforme disponibles n'ont pas été installées sur PHP 7.x.
Solution au problème :
Ce bogue a été corrigé dans la mise à jour du module principal main 22.100.0
.
Par conséquent, vous devez rétrograder la version PHP à 7.x, mettre à jour le produit et les modules vers la dernière version disponible. Et alors seulement, mettez à niveau la version PHP vers 8.x.
[TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMP\BXE\EventHandlers::AdminContextMenuShow() cannot be called statically (0)...
Cette erreur peut apparaître après la mise à niveau de la version PHP à 8, mais n'est plus très évidente :
[TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMP\BXE\EventHandlers::AdminContextMenuShow() cannot be called statically (0) /var/www//bitrix/modules/main/classes/general/module.php:480 #0: ExecuteModuleEventEx /var/www/bitrix/modules/main/interface/admin_ui_list.php:1983 #1: CAdminUiContextMenu->Show /var/www/bitrix/modules/main/interface/admin_ui_list.php:1168 #2: CAdminUiList->ShowContext /var/www/bitrix/modules/main/interface/admin_ui_list.php:630 #3: CAdminUiList->DisplayFilter /var/www/bitrix/modules/iblock/admin/iblock_element_admin.php:5217 #4: include(string) /var/www/bitrix/admin/cat_product_admin.php:3
À partir du texte d'erreur, vous ne pouvez pas trouver immédiatement le répertoire du module, mais cette méthode COMP\BXE\EventHandlers::AdminContextMenuShow()
appartient à un module tiers.
Solution au problème :
Le correctif dans le cas général sera le suivant : dans le code AdminContextMenuShow()
il faut déclarer correctement la fonction statique :
function AdminContextMenuShow()doit être remplacé par :
public static function AdminContextMenuShow()
Écran blanc après la mise à niveau de la version PHP à 8.x, et sur PHP 7.4 tout fonctionne
Une telle erreur peut être due au fait que le paramètre short_open_tag = Off
est défini dans les paramètres PHP.
Solution au problème :
- Vous devez définir dans le fichier de configuration PHP :
short_open_tag = On
. - Vérifiez les journaux du serveur Web pour les erreurs et corrigez-les.
- Vous pouvez également afficher les erreurs sur une page de site Web à écran blanc : cliquez avec le bouton droit de la souris et sélectionnez Afficher le code source de la page, faites défiler la page et vérifiez s'il y a des erreurs.