PHP設定
本主題討論如何設定必要的PHP選項。
如需雲端組態指南,請參閱 雲端基礎結構上的Commerce 指南中的PHP設定。
PHP程式控制
您必須先在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
若要驗證已安裝的擴充功能:
-
列出已安裝的模組。
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
設定檔
若要尋找網頁伺服器組態,請在網頁瀏覽器中執行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網頁伺服器(CentOS或Ubuntu))
-
找到
opcache.save_comments
,並視需要取消註解。 -
請確定它的值設定為
1
。 -
儲存變更並退出文字編輯器。
-
重新啟動您的網頁伺服器:
- Apache, Ubuntu:
service apache2 restart
- Apache, CentOS:
service httpd restart
- nginx、Ubuntu和CentOS:
service nginx restart
- Apache, Ubuntu:
疑難排解
請參閱下列Adobe Commerce支援文章,以取得疑難排解PHP問題的說明:
- 在瀏覽器中存取Adobe Commerce時,PHP版本錯誤或404錯誤
- PHP設定錯誤
- PHP mcrypt延伸未正確安裝
- PHP版本整備檢查問題
- 常見的PHP嚴重錯誤與解決方法