KUSANAGIをインストールしたWordPressにて、ShortPixelプラグインにて画像一括最適化を実施しようとしても進捗バーが0%から進まず、「ファイルを書き込めませんでした」のようなエラーメッセージが出てくる場合があります。
(エラーメッセージは実際には異なる表現だったかと思います)
本記事では、ShortPixelなどプラグインがKUSANAGI環境で思うように動作しなくなった場合の解決策を記述します。
参考: ShortPixelプラグインで一括WebP化!画像圧縮でWordPressを高速に | まほウェブ
※ 記事最後にも記載していますが、そもそもKUSANAGI(またはNginx)とShortPixelの相性が悪く、うまくWebP形式で配信できない可能性が高いです。
参考記事: KUSANAGI上でShortPixel利用のWebP化は実装できない?
この点にもご留意ください。
目次:
- ShortPixelのアクセス先フォルダの所有者をPHP実行権限をもつユーザーに
- uploadsディレクトリ以下の所有者・所属グループをPHP権限をもつユーザー・グループに一括変更
- 影響先が不明な場合やプラグインインストール時に「ディレクトリが作成できませんでした」の場合はDocumentRoot以下を一括所有者変更
- kusanagiユーザーにPHP実行権限をもたせるのが一番分かりやすく適切かも
- KUSANAGIでWebp画像を表示・配信させるための方法
ShortPixelのアクセス先フォルダの所有者をPHP実行権限をもつユーザーに
上記の現象は、ShortPixelが最適化したあとに画像を書き込もうとしているが、書き込みするための所有権限がないためにエラーとなっていることが原因。
uploadsディレクトリ以下の所有者・所属グループをPHP権限をもつユーザー・グループに一括変更
下記コマンドでuploadsディレクトリ全体の所有者および所有者グループの変更を行います。
デフォルトではKUSANAGI:KUSANAGIとなっているかと思いますが、PHP実行権限をもつhttpd:wwwに変更。
$ chown -R httpd:www /home/kusanagi/000xxxx/DocumentRoot/wp-content/uploads
上記パスはConoHa VPSにKUSANAGIをインストールした場合のパスです。環境ごとに異なりますので確認してください。
同様にプラグインが書き込めないという現象は、 ConoHa VPS(KUSANAGI)にWordPressを移行させる手順と方法 で紹介している All in One Migration でも発生しました。
KUSANAGIでプラグインの書き込み時エラーが出る場合には、上記のようにフォルダの所有者と所属グループを確認する必要がありそうです。
影響先が不明な場合やプラグインインストール時に「ディレクトリが作成できませんでした」の場合はDocumentRoot以下を一括所有者変更
「そうは言っても、どこのフォルダが影響しているのか分からない…!」という場合には、DocumentRoot以下の所有者・所属Gをすべてhttpd:wwwにする、という荒療治も。
WordPressあるある プラグインがインストールできない・・・2段階の対応 - Qiita
kusanagiの場合
$ chmod httpd:www -R /home/kusanagi/(your-kusanagi-name)/DocumentRoot
「ディレクトリが作成できませんでした」といったWordPressにプラグインがインストールできないエラーの際などには、上記手段を使う場合もあります。
kusanagiユーザーにPHP実行権限をもたせるのが一番分かりやすく適切かも
または、kusanagiユーザーにPHP実行権限をもたせる、という方がスッキリとして分かりやすいかもしれません。
sudo vi /etc/php7-fpm.d/www.conf 23-24 行目を次のように修正します user = kusanagi group = kusanagi 念のためにマシンを再起動しておきます reboot
KUSANAGI で PHP の実行グループとユーザー名を kusanagi にする|プログラムメモ
KUSANAGIでWebp画像を表示・配信させるための方法
なお、KUSANAGI(Nginx)でWebp画像を配信するには下記の方法があります。
- WAXELを利用する
- Webp配信するためのプラグイン導入(EWWWや本件ShortPixelなど)
- CloudFlareなど、CDN側でWebP化の処理と配信をさせる
- 別途Webp画像を配信するためのNginx設定(下記記事)
KUSANAGI(Nginx)で次世代フォーマット(WEBP)へ自動で変換して画像配信する(プラグインEWWW image optimizer無し!) | きもおたねっと。
ただし、ShortPixelはKUSANAGIまたはNginxとの相性からか、私の場合上手くWebP化できませんでした。またテーマとの競合かShortPixelによる配信方法で表示崩れも発生。
参考記事: KUSANAGI上でShortPixel利用のWebP化は実装できない?
上の記事ではCloudFlare等、CDN側でのWebP化についても言及しています。
tag:
Category: WordPress