PHP 7.2 + WordPress 4.9.4 兼容性問題

為什麼使用 PHP 7.2 後更新或預覽文章都會爆出錯誤的?但 WordPress 官方是說 WordPress 4.9.4 支援 PHP 7.2 或以上的,真奇怪!

錯誤如下:

Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/wp-content/plugins/cloudflare/src/WordPress/Hooks.php on line 133

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/cloudflare/src/WordPress/Hooks.php:133) in /var/www/html/wp-admin/post.php on line 198

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/cloudflare/src/WordPress/Hooks.php:133) in /var/www/html/wp-includes/pluggable.php on line 1216

另一個問題是為什麼更新 PHP 的 Minor Version 不兼容舊的 API?不跟 Semantic Versioning 嗎?官方的 Backward incompatible changes 說明。

現階段只好乖乖改回 PHP 7.1。

幸好這個 WordPress 是運行在 Docker 上的,所以很容易更新或還原版本。以下是我的 docker-compose.yaml:

version: "3.4"
services:
  wordpress:
    image: wordpress:php7.1-apache
    restart: always
    container_name: wordpress
    ports:
      - 80:80
    volumes:
      - ./wordpress:/var/www/html
    logging:
      options:
        max-size: 10m
docker-compose up -d

很簡單就還原了!Docker 真是好物!

現在只好等新版本的 WordPress 去修正這個問題後再升級吧!

待過小公司,大公司。有創立個人公司和成為共同創辦人經驗,不怕失敗,永遠保持創業熱誠,籍創業不斷學習並改進自己。