[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

Résoudre une erreur de décalage non autorisée

Cet article fournit une solution pour lorsque, dans Adobe Commerce 2.1 ou version ultérieure, vous recevez une erreur de décalage illégal lors de la création d’un produit dans Commerce Admin.

Dans Adobe Commerce 2.1 ou version ultérieure, lors de la création d’un produit dans Commerce Admin, l’erreur suivante peut s’afficher :

Warning: Illegal string offset 'is_in_stock' in [...]/vendor/
magento/module-catalog-inventory/Ui/DataProvider/Product/Form/
Modifier/AdvancedInventory.php on line 87

Détail

Adobe Commerce 2.1 et versions ultérieures utilisent des commentaires de code PHP dans l’appel de validation getDocComment de la méthode getExtensionAttributes dans Magento\Framework\Api\ExtensionAttributesFactory.php.

Si vous avez activé le OPcache PHP (que nous recommandons), cette erreur s’affiche car, par défaut, le paramètre OPcache opcache.save_comments est désactivé.

Solution

Pour résoudre le problème, localisez vos paramètres de configuration OPcache et activez opcache.save_comments comme suit :

Étape 1 : Localisation de la configuration OPcache

Pour rechercher les paramètres de configuration du cache d’OP :

Les paramètres du OPcache PHP sont généralement situés dans php.ini ou opcache.ini. L’emplacement peut dépendre de votre système d’exploitation et de la version PHP. Le fichier de configuration OPcache peut comporter une section [opcache] ou des paramètres tels que opcache.enable.

Suivez les instructions ci-dessous pour le trouver :

  • Serveur web Apache :

Pour Ubuntu avec Apache, les paramètres OPcache se trouvent généralement dans php.ini.

Pour CentOS avec Apache ou nginx, les paramètres OPcache se trouvent généralement dans /etc/php.d/opcache.ini.

Dans le cas contraire, utilisez la commande suivante pour la localiser :

    $ sudo find / -name 'opcache.ini'
  • Serveur web nginx avec PHP-FPM : /etc/php5/fpm/php.ini.

Si vous avez plusieurs opcache.ini, modifiez-les tous.

Étape 2 : Activer opcache.save_comments

  1. Ouvrez votre fichier de configuration OPcache dans un éditeur de texte.

  2. Localisez opcache.save_comments et annulez la mise en commentaire, si nécessaire.

  3. Assurez-vous que sa valeur est définie sur 1.

  4. Enregistrez vos modifications et quittez l’éditeur de texte.

  5. Redémarrez votre serveur web :

    • Apache, Ubuntu : service apache2 restart
    • Apache, CentOS : service httpd restart
    • nginx, Ubuntu et CentOS : service nginx restart
  6. Régénérer la configuration de l’ID et toutes les classes manquantes qui peuvent être générées automatiquement :

    $ bin/magento setup:di:compile`
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a