Risolvi un errore di offset non valido

Questo articolo fornisce una soluzione per quando, in Adobe Commerce 2.1 o versione successiva, si riceve un messaggio di errore Risolvi un offset non valido durante la creazione di un nuovo prodotto in Commerce Admin.

In Adobe Commerce 2.1 o versione successiva, quando si crea un nuovo prodotto in Commerce Admin, potrebbe essere visualizzato il seguente errore:

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

Dettaglio

Adobe Commerce 2.1 e versioni successive utilizzano i commenti del codice PHP nella chiamata di convalida getDocComment nel metodo getExtensionAttributes in Magento\Framework\Api\ExtensionAttributesFactory.php.

Se è stata abilitata la PHP OPcache (scelta consigliata), questo errore viene visualizzato perché per impostazione predefinita l'impostazione OPcache opcache.save_comments è disabilitata.

Soluzione alternativa

Per risolvere il problema, individuare le impostazioni di configurazione di OPcache e abilitare opcache.save_comments come segue:

Passaggio 1: individuare la configurazione OPcache

Per trovare le impostazioni di configurazione di OPcache:

Le impostazioni PHP OPcache si trovano in genere in php.ini o opcache.ini. La posizione potrebbe dipendere dal sistema operativo in uso e dalla versione PHP. Il file di configurazione OPcache potrebbe avere una sezione [opcache] o impostazioni come opcache.enable.

Utilizza le seguenti linee guida per trovarlo:

  • Server web Apache:

Per Ubuntu con Apache, le impostazioni OPcache si trovano in genere in php.ini.

Per CentOS con Apache o nginx, le impostazioni OPcache si trovano in genere in /etc/php.d/opcache.ini.

In caso contrario, utilizzare il comando seguente per individuarlo:

    $ sudo find / -name 'opcache.ini'
  • Server Web nginx con PHP-FPM: /etc/php5/fpm/php.ini.

Se si dispone di più di un opcache.ini, modificarli tutti.

Passaggio 2: abilitare opcache.save_comments

  1. Apri il file di configurazione OPcache in un editor di testo.

  2. Individuare opcache.save_comments e, se necessario, rimuoverlo dal commento.

  3. Assicurarsi che il relativo valore sia impostato su 1.

  4. Salva le modifiche e esci dall’editor di testo.

  5. Riavviare il server Web:

    • Apache, Ubuntu: service apache2 restart
    • Apache, CentOS: service httpd restart
    • nginx, Ubuntu e CentOS: service nginx restart
  6. Rigenera la configurazione DI e tutte le classi mancanti che possono essere generate automaticamente:

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