PHP设置

本主题讨论如何设置所需的PHP选项。

NOTE
最新版本的Adobe Commerce至少需要8.1个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

要验证已安装的扩展,请执行以下操作:

  1. 列出已安装的模块。

    code language-bash
    php -m
    
  2. 验证是否已安装所有必需的扩展。

  3. 使用用于安装PHP的相同工作流添加任何缺少的模块。

检查PHP设置

WARNING
如果您使用的是PHP 7.4.20,请在php.ini文件中设置pcre.jit=0。 这会绕过PHP 错误而阻止加载CSS。
  • 为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_sizerealpath_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代码注释来生成代码。

NOTE
为避免在安装和升级过程中出现问题,Adobe强烈建议将相同的PHP设置同时应用于PHP命令行配置和PHP Web服务器插件配置。 有关更多信息,请参阅下一部分。

查找PHP配置文件

本节讨论如何查找更新所需设置所需的配置文件。

查找php.ini配置文件

要查找Web服务器配置,请在Web浏览器中运行phpinfo.php文件并查找Loaded Configuration File,如下所示:

PHP信息页

要定位PHP命令行配置,请输入

php --ini | grep "Loaded Configuration File"
NOTE
如果您只有一个php.ini文件,请更改该文件。 如果您有两个php.ini文件,请更改​ 两个 ​文件。 否则,可能会导致性能不可预测。

查找OPcache配置设置

PHP OPcache设置通常位于php.iniopcache.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选项:

  1. 在文本编辑器中打开php.ini

  2. 在可用的时区设置中找到服务器的时区

  3. 找到以下设置并在必要时取消注释:

    code language-conf
    date.timezone =
    
  4. 添加您在步骤2中找到的时区设置。

  5. memory_limit的值更改为本节开头建议的值之一。

    例如,

    code language-conf
    memory_limit=2G
    
  6. 添加或更新realpath_cache配置以匹配以下值:

    code language-conf
    ;
    ; Increase realpath cache size
    ;
    realpath_cache_size = 10M
    
    ;
    ; Increase realpath cache ttl
    ;
    realpath_cache_ttl = 7200
    
  7. 保存更改并退出文本编辑器。

  8. 打开其他php.ini(如果它们不同)并在其中进行相同的更改。

设置OPcache选项

要设置opcache.ini选项:

  1. 在文本编辑器中打开OPcache配置文件:

    • opcache.ini (CentOS)
    • php.ini (Ubuntu)
    • /etc/php/8.1/fpm/php.ini (nginx Web服务器(CentOS或Ubuntu))
  2. 找到opcache.save_comments并在必要时取消其注释。

  3. 确保其值设置为1

  4. 保存更改并退出文本编辑器。

  5. 重新启动Web服务器:

    • Apache, Ubuntu: service apache2 restart
    • Apache, CentOS: service httpd restart
    • nginx、Ubuntu和CentOS: service nginx restart

故障排除

有关解决PHP问题的帮助,请参阅以下Adobe Commerce支持文章:

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995