PHP设置
本主题讨论如何设置所需的PHP选项。
有关云配置指南,请参阅 云基础架构上的Commerce 指南中的PHP设置。
PHP进程控制
在并行模式下运行索引器之前,必须在PHP中启用进程控制支持(pcntl
)。 请参阅PHP文档中的安装。
验证是否已安装PHP
默认情况下,大多数Linux发行版中都安装了PHP。 本主题假定您已安装PHP。 要验证是否已安装PHP,请在命令行中输入以下内容:
php -v
如果安装了PHP,则会显示类似于以下内容的消息:
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
如果未安装PHP(或需要升级),请按照Linux分发的说明进行安装。
验证已安装的扩展
Adobe Commerce需要特定的PHP扩展。 以下列表指定了每个Commerce版本所需的扩展。 这些列表是从运行每个版本最新版本的部署自动生成的。
Adobe Commerce要求:
ext-bcmath
ext-ctype
ext-curl
ext-dom
ext-fileinfo
ext-filter
ext-gd
ext-hash
ext-iconv
ext-intl
ext-json
ext-libxml
ext-mbstring
ext-openssl
ext-pcre
ext-pdo_mysql
ext-simplexml
ext-soap
ext-sockets
ext-sodium
ext-spl
ext-tokenizer
ext-xmlwriter
ext-xsl
ext-zip
ext-zlib
lib-libxml
Magento Open Source需要:
ext-bcmath
ext-ctype
ext-curl
ext-dom
ext-fileinfo
ext-filter
ext-gd
ext-hash
ext-iconv
ext-intl
ext-json
ext-libxml
ext-mbstring
ext-openssl
ext-pcre
ext-pdo_mysql
ext-simplexml
ext-soap
ext-sockets
ext-sodium
ext-tokenizer
ext-xmlwriter
ext-xsl
ext-zip
ext-zlib
lib-libxml
要验证已安装的扩展,请执行以下操作:
-
列出已安装的模块。
code language-bash php -m
-
验证是否已安装所有必需的扩展。
-
使用用于安装PHP的相同工作流添加任何缺少的模块。
检查PHP设置
- 为PHP设置系统时区;否则,安装期间显示的以下错误以及与时间相关的操作(如cron )可能无法工作:
PHP Warning: date(): It is not safe to rely on the system's timezone settings. [more messages follow]
-
设置PHP内存限制
Adobe建议执行以下操作:
- 正在编译代码或部署静态资源,
1G
- 调试,
2G
- 正在测试,
~3-4G
- 正在编译代码或部署静态资源,
-
将PHP
realpath_cache_size
和realpath_cache_ttl
的值增加到建议的设置:code language-conf realpath_cache_size=10M realpath_cache_ttl=7200
这些设置允许PHP进程将路径缓存到文件,而不是在页面加载时查找文件。 请参阅PHP文档中的性能调整。
-
启用Adobe Commerce 2.1及更高版本所需的
opcache.save_comments
。出于性能原因,Adobe建议启用PHP OPcache。 OPcache在许多PHP分发中启用。
Adobe Commerce 2.1及更高版本使用PHP代码注释来生成代码。
查找PHP配置文件
本节讨论如何查找更新所需设置所需的配置文件。
查找php.ini
配置文件
要查找Web服务器配置,请在Web浏览器中运行phpinfo.php
文件并查找Loaded Configuration File
,如下所示:
要定位PHP命令行配置,请输入
php --ini | grep "Loaded Configuration File"
php.ini
文件,请更改该文件。 如果您有两个php.ini
文件,请更改 两个 文件。 否则,可能会导致性能不可预测。查找OPcache配置设置
PHP OPcache设置通常位于php.ini
或opcache.ini
中。 该位置可能取决于您的操作系统和PHP版本。 OPcache配置文件可能具有opcache
部分或类似于opcache.enable
的设置。
请使用以下指南查找它:
-
Apache Web Server:
对于带有Apache的Ubuntu,OPcache设置通常位于
php.ini
文件中。对于具有Apache或nginx的CentOS,OPcache设置通常位于
/etc/php.d/opcache.ini
中如果没有,请使用以下命令找到它:
code language-bash sudo find / -name 'opcache.ini'
-
带有PHP-FPM的nginx Web服务器:
/etc/php/8.1/fpm/php.ini
如果您有多个opcache.ini
,请修改全部。
如何设置PHP选项
要设置PHP选项:
-
在文本编辑器中打开
php.ini
。 -
在可用的时区设置中找到服务器的时区
-
找到以下设置并在必要时取消注释:
code language-conf date.timezone =
-
添加您在步骤2中找到的时区设置。
-
将
memory_limit
的值更改为本节开头建议的值之一。例如,
code language-conf memory_limit=2G
-
添加或更新
realpath_cache
配置以匹配以下值:code language-conf ; ; Increase realpath cache size ; realpath_cache_size = 10M ; ; Increase realpath cache ttl ; realpath_cache_ttl = 7200
-
保存更改并退出文本编辑器。
-
打开其他
php.ini
(如果它们不同)并在其中进行相同的更改。
设置OPcache选项
要设置opcache.ini
选项:
-
在文本编辑器中打开OPcache配置文件:
opcache.ini
(CentOS)php.ini
(Ubuntu)/etc/php/8.1/fpm/php.ini
(nginx Web服务器(CentOS或Ubuntu))
-
找到
opcache.save_comments
并在必要时取消其注释。 -
确保其值设置为
1
。 -
保存更改并退出文本编辑器。
-
重新启动Web服务器:
- Apache, Ubuntu:
service apache2 restart
- Apache, CentOS:
service httpd restart
- nginx、Ubuntu和CentOS:
service nginx restart
- Apache, Ubuntu:
故障排除
有关解决PHP问题的帮助,请参阅以下Adobe Commerce支持文章:
- 在浏览器中访问Adobe Commerce时,PHP版本错误或404错误
- PHP设置错误
- 未正确安装PHP mcrypt扩展
- PHP版本准备情况检查问题
- 常见PHP错误和解决方案