You can choose which version of PHP to run in your .magento.app.yaml
file:
name: mymagento
type: php:<version>
If upgrading to PHP 8.1 and later, remove JSON from the runtime: extensions:
property in the .magento.app.yaml
file and redeploy. The JSON extension comes installed in Cloud environment since PHP 8.0.
You can customize the PHP settings for your environment using a php.ini
file that is appended to the configuration maintained by Adobe Commerce.
In your repository, add the php.ini
file to the root of the application (the repository root).
Configuring PHP settings improperly can cause issues, so only advanced administrators should set these options.
To increase the PHP memory limit, add the following setting to the php.ini
file:
memory_limit = 1G
For debugging, increase the value to 2G.
Set the following realpath_cache
settings to improve application performance.
;
; Increase realpath cache size
;
realpath_cache_size = 10M
;
; Increase realpath cache ttl
;
realpath_cache_ttl = 7200
These settings allow PHP processes to cache paths to files instead of looking them up for each page load. See Performance Tuning in the PHP documentation.
For a list of recommended PHP configuration settings, see Required PHP settings in the Installation guide.
After pushing the php.ini
changes to your Cloud environment, you can check that the custom PHP configuration has been added to your environment. For example, use SSH to log in to the remote environment and view the file using something similar to the following:
cat /etc/php/<php-version>/fpm/php.ini
If you use Cloud Docker for Commerce for local development, see Docker service containers for information about using a custom php.ini
file in a Docker environment.
You can enable or disable PHP extensions in the runtime:extension
section. Also, the extensions specified become available in the Docker PHP containers.
Before enabling extensions, it is important to understand that the PHP version must be compatible with the operating system hosting the project. Your project environment might require an OS upgrade by the Infrastructure team before you can proceed.
Example in .magento.app.yaml
file:
runtime:
extensions:
- sockets
- sodium
- ssh2
disabled_extensions:
- bcmath
- bz2
- calendar
- exif
Use SSH to log in to an environment and list the PHP extensions.
php -m
For details about a specific PHP extension, see the PHP Extension List.
The following table shows the supported PHP extensions when deploying Adobe Commerce on the Cloud platform.
Default extensions | Installed extensions that cannot be uninstalled |
Extensions that can be installed and uninstalled as needed |
---|---|---|
bcmath bz2 calendar exif gd gettext intl mysqli openswoole pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip |
ctype curl date dom fileinfo filter ftp hash iconv json mbstring mysqlnd openssl pcre pdo pdo_sqlite phar posix readline session sqlite3 tokenizer xml xmlreader xmlwriter |
geoip gmp igbinary imagick imap ioncube ldap mailparse mcrypt msgpack mysqli oauth pdo_mysql propro pspell raphf recode redis shmop sockets sodium ssh2 tidy xdebug xmlrpc xsl yaml |
PHP module requirements are tied to the Adobe Commerce version. See PHP requirements.
For Pro projects, the following extensions require additional support to install:
sourceguardian
For example, to set up PHP to execute only SourceGuardian-protected scripts in all environments, the following option must be set in the php.ini
file:
[SourceGuardian]
sourceguardian.restrict_unencoded = "1"
See section 3.5 of the SourceGuardian documentation. This is a link to a PDF.
Submit an Adobe Commerce Support ticket to install these PHP extensions in all Production environments and Pro Staging environments. Include your updated .magento/services.yaml
file, .magento.app.yaml
file with the updated PHP version and any additional PHP extensions. For changes to a live Production environment, you must provide a minimum of 48 hours notice. It can take up to 48 hours for the Cloud infrastructure team to update your project.
PHP compiled with debug is not supported and the Probe may conflict with XDebug or XHProf. Disable those extensions when enabling the Probe. The Probe conflicts with some PHP extensions like Pinba or IonCube.