PHP設定

本主題討論如何設定必要的PHP選項。

NOTE
最新版Adobe Commerce至少需要PHP 8.1。另請參閱 系統需求 PHP的所有支援版本。

如需雲端設定指南,請參閱 PHP設定雲端基礎結構上的Commerce 指南。

PHP程式控制

在平行模式下執行索引器之前,您必須啟用「程式控制」支援(pcntl)。 另請參閱 安裝 在PHP檔案中。

驗證是否已安裝PHP

PHP預設會安裝在大多數Linux發行版本上。 本主題假設您已安裝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,請設定 pcre.jit=0 在您的 php.ini 檔案。 這會繞過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檔案中。

  • 啟用 opcache.save_comments,此元件為Adobe Commerce 2.1和更新版本的必要元件。

    Adobe建議啟用 PHP OPcache 基於效能考量。 OPcache已在許多PHP分配中啟用。

    Adobe Commerce 2.1和更新版本使用PHP程式碼註解來產生程式碼。

NOTE
為避免在安裝和升級期間出現問題,Adobe強烈建議您對PHP命令列配置和PHP Web伺服器外掛程式配置都應用相同的PHP設定。 如需詳細資訊,請參閱下一節。

尋找PHP組態檔

本節將討論如何找到更新所需設定所需的組態檔。

尋找 php.ini 組態檔

若要尋找網頁伺服器組態,請執行 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網頁伺服器(CentOS或Ubuntu))
  2. 尋找 opcache.save_comments 並視需要取消註解。

  3. 確保其值設定為 1.

  4. 儲存變更並退出文字編輯器。

  5. 重新啟動您的網頁伺服器:

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

疑難排解

請參閱下列Adobe Commerce支援文章,以取得疑難排解PHP問題的說明:

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