Resolve an illegal offset error

This article provides a solution for when in Adobe Commerce 2.1 or later, you receive a Resolve an illegal offset error when creating a new product in the Commerce Admin.

In Adobe Commerce 2.1 or later, when creating a new product in the Commerce Admin, the following error might display:

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

Detail

Adobe Commerce 2.1 and later use PHP code comments in the getDocComment validation call in the getExtensionAttributesmethod in Magento\Framework\Api\ExtensionAttributesFactory.php.

If you enabled the PHP OPcache (which we recommend), this error displays because by default, the OPcache setting opcache.save_commentsis disabled.

Workaround

To solve the issue, locate your OPcache configuration settings and enable opcache.save_comments as follows:

Step 1: Locate your OPcache configuration

To find OPcache configuration settings:

PHP OPcache settings are typically located either in php.ini or opcache.ini. The location might depend on your operating system and PHP version. The OPcache configuration file might have an [opcache] section or settings like opcache.enable.

Use the following guidelines to find it:

  • Apache web server:

For Ubuntu with Apache, OPcache settings are typically located in php.ini.

For CentOS with Apache or nginx, OPcache settings are typically located in /etc/php.d/opcache.ini.

If not, use the following command to locate it:

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

If you have more than one opcache.ini, modify all of them.

Step 2: Enable opcache.save_comments

  1. Open your OPcache configuration file in a text editor.

  2. Locate opcache.save_comments and uncomment it, if necessary.

  3. Make sure its value is set to 1.

  4. Save your changes and exit the text editor.

  5. Restart your web server:

    • Apache, Ubuntu: service apache2 restart
    • Apache, CentOS: service httpd restart
    • nginx, Ubuntu, and CentOS: service nginx restart
  6. Regenerate DI configuration and all missing classes that can be auto-generated:

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