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
-
Apri il file di configurazione OPcache in un editor di testo.
-
Individuare
opcache.save_commentse, se necessario, rimuoverlo dal commento. -
Assicurarsi che il relativo valore sia impostato su
1. -
Salva le modifiche e esci dall’editor di testo.
-
Riavviare il server Web:
- Apache, Ubuntu:
service apache2 restart - Apache, CentOS:
service httpd restart - nginx, Ubuntu e CentOS:
service nginx restart
- Apache, Ubuntu:
-
Rigenera la configurazione DI e tutte le classi mancanti che possono essere generate automaticamente:
$ bin/magento setup:di:compile`