PR
PR

急にWordPressのプラグインが更新できない!PHP-FPM 8.4アップデートによるプラグイン更新エラーの解決法

記事内に広告が含まれています。

「deb.sury.org」リポジトリのPHP-FPM 8.4をインストールしたUbuntuで、急にWordPressでプラグインの更新や、システムのアップデートができなくなりました。(画像のアップロードなどもできなくなる。)

その原因と対策方法について、色々と調べた結果を備忘録として残しておきます。

原因

2026年5月中旬に行われた「deb.sury.org」リポジトリのPHP-FPM 8.4アップデートにより、systemdのサンドボックス(セキュリティ)設定が大幅に強化されたのが原因でした。

具体的には、/lib/systemd/system/php8.4-fpm.service に ProtectSystem=full という設定が追加されています。

これにより、システムの「/usr」「/boot」「/etc」ディレクトリに対して、PHPからの書き込みが禁止され「読み取り専用」として扱われるようになります。

そのため、「/usr/share/nginx/」配下に置いていたWordPressのディレクトリがPHP-FPMから書き込み不可となってしまい、プラグインの更新ができなくなっていた、という仕組みです。

対応方法

セキュリティ設定を維持しつつ、WordPressのディレクトリにだけ書き込み権限を許可するために、systemdの設定を上書き(オーバーライド)します。(/lib/systemd/system/php8.4-fpm.serviceの直接編集は推奨されていません)

以下のコマンドを使い、設定エディタを開きます。

$ sudo systemctl edit php8.4-fpm.service

エディタが開いたら、上部の空いているスペース(コメントアウト # されていない場所)に、以下の2行を正確に入力してください。

[Service]
ReadWritePaths=書き込みを許可したいディレクトリのフルパス

例: ReadWritePaths=/usr/share/nginx/

設定を保存してエディタを閉じたら、最後にPHP-FPMを再起動して新しい設定を読み込ませます。

$ sudo systemctl restart php8.4-fpm.service

これで再びWordPressからの更新やアップロードができるようになります。

以前と同じ制限なしに戻したい場合

どうしても以前と同じ

$ sudo systemctl edit php8.4-fpm.service
[Service]
ProtectSystem=false
PrivateDevices=false
ProtectKernelModules=false
ProtectKernelTunables=false
RestrictAddressFamilies=

変更された項目

「deb.sury.org」リポジトリのPHP-FPM 8.4アップデートにより変更された点ですが、アップデート前の設定ファイル「/usr/lib/systemd/system/php8.4-fpm.service」が上書きあしまい存在しないため、別サーバのUbuntu標準リポジトリからインストールされた、PHP-FPM 8.3の設定ファイル「/usr/lib/systemd/system/php8.3-fpm.service」と比較してみます。

php8.3-fpm.service

Ubuntu 24.04.4 LTSの標準リポジトリでインストールされたPHP-FPM 8.3の「php8.3-fpm.service」です。

[Unit]
Description=The PHP 8.3 FastCGI Process Manager
Documentation=man:php-fpm8.3(8)
After=network.target

[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

php8.4-fpm.service

Ubuntu 24.04.4 LTSに「deb.sury.org」リポジトリでインストールされたPHP-FPM 8.4の「php8.4-fpm.service」です。(2026.05.15現在)

以下の項目が増えていました。

  • Restart=on-failure
  • ProtectSystem=full
  • PrivateDevices=true
  • ProtectKernelModules=true
  • ProtectKernelTunables=true
  • ProtectControlGroups=true
  • RestrictRealtime=true
  • RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
  • RestrictNamespaces=true
[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm8.4 --nodaemonize --fpm-config /etc/php/8.4/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.4/fpm/pool.d/www.conf 84
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.4/fpm/pool.d/www.conf 84
ExecReload=/bin/kill -USR2 $MAINPID
Restart=on-failure
ProtectSystem=full
PrivateDevices=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
RestrictNamespaces=true

コメント

タイトルとURLをコピーしました