Resolver um erro de deslocamento ilegal

Este artigo fornece uma solução para quando, no Adobe Commerce 2.1 ou posterior, você recebe um erro Resolver um deslocamento ilegal ao criar um novo produto no Administrador do Commerce.

No Adobe Commerce 2.1 ou posterior, ao criar um novo produto no Commerce Admin, o seguinte erro pode ser exibido:

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

Detalhe

O Adobe Commerce 2.1 e versões posteriores usam comentários de código PHP na chamada de validação getDocComment no método getExtensionAttributes em Magento\Framework\Api\ExtensionAttributesFactory.php.

Se você habilitou o OPcache do PHP (o que recomendamos), este erro é exibido porque, por padrão, a configuração do OPcache opcache.save_comments está desabilitada.

Solução alternativa

Para resolver o problema, localize suas definições de configuração do OPcache e habilite o opcache.save_comments da seguinte maneira:

Etapa 1: Localizar a configuração do OPcache

Para localizar as definições de configuração do OPcache:

Normalmente, as configurações de OPcache do PHP estão localizadas em php.ini ou opcache.ini. A localização pode depender do seu sistema operacional e da versão do PHP. O arquivo de configuração OPcache pode ter uma seção [opcache] ou configurações como opcache.enable.

Use as diretrizes a seguir para encontrá-la:

  • Apache Web Server:

Para o Ubuntu com Apache, as configurações do OPcache normalmente estão localizadas em php.ini.

Para CentOS com Apache ou nginx, as configurações de OPcache normalmente estão localizadas em /etc/php.d/opcache.ini.

Caso contrário, use o seguinte comando para localizá-lo:

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

Se você tiver mais de um opcache.ini, modifique todos eles.

Etapa 2: Habilitar opcache.save_comments

  1. Abra o arquivo de configuração do OPcache em um editor de texto.

  2. Localize opcache.save_comments e remova o comentário, se necessário.

  3. Verifique se o valor está definido como 1.

  4. Salve as alterações e saia do editor de texto.

  5. Reiniciar o servidor Web:

    • Apache, Ubuntu: service apache2 restart
    • Apache, CentOS: service httpd restart
    • nginx, Ubuntu e CentOS: service nginx restart
  6. Gerar novamente a configuração de ID e todas as classes ausentes que podem ser geradas automaticamente:

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