「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


コメント