WordPressをphp7.4にバージョンアップ

wordpressを動かすphp-fpmのバージョンを7.0から7.4にした際にやった事と、つまづいた事をメモします。

やったこと

初めに、PHP Compatibility Checker を使って、php7.3までの動作をチェックしました。

全てのプラグインで「互換性あり」と出たので、php7.4-fpmへ切替したのですが、ヘッダーは表示されるのに、コンテンツが何も表示されない状態になりました。php7.3-fpmも試しましたが、同じ現象となりました。

ググると、どうも crayon-syntax-highlighter が怪しいという事がわかり、githubにfix versionが公開されていたので、ダウンロードして現在のプラグインに上書きし、php7.4-fpmにしたところ、ちゃんと動作しました。めでたしめでたし。以下に作業ログを貼っておきます。

作業ログ

Fixバージョンを取ってきて展開する

% mkdir ${HOME}/tmp
% cd ${HOME}/tmp
% wget https://github.com/Crunchify/crayon-syntax-highlighter/archive/2.8.6.tar.gz
% gzip -dc 2.8.6.tar.gz | tar xf -

展開したファイルを運用中のpluginに適用する

展開すると、crayon-syntax-highlighter-2.8.6 というディレクトリが出来ている。Wordpressのプラグインのpathが、/var/www/wp-content/plugins/crayon-syntax-highlighter/ だとして、以下で上書きする。

% cd crayon-syntax-highlighter-2.8.6/
% tar cf - . | \
  ( cd /var/www/wp-content/plugins/crayon-syntax-highlighter/ ; \
  sudo tar xf - )

php7.4-fpmに変更する

以下は、私の環境ですので、各々の環境に合わせて変更してくださいね。

php7.0と同じパッケージをphp7.4でも用意する

% apt list --installed | \
  grep ^php7.0 | \
  awk -F\/ '{print $1}' | \
  sed 's/7.0/7.4/' | \
  xargs -n1 sudo apt install -y

php7.0-fpm と php7.4-fpm 両方とも起動している事を確認する

% sudo service php7.0-fpm status
% sudo service php7.4-fpm status

※ php-fpmの設定 /etc/php/7.0/php-fpm.confや、/etc/php/7.0/pool.d/www.conf など変更していたら、php7.4-fpmの設定にも反映し、reloadしておいてください。

nginxの設定を変更して切り替える。ここでは、old.confが古い設定で、new.confが新しい設定と仮定します。その変更差分の結果を示します。

% cd /etc/nginx/sites-enabled
% diff old.conf new.conf
12c12
< fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
---
> fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;

% sudo service nginx restart

バージョンが上がっていることを確認します。

ツール>サイトヘルス>情報>サーバー の順で選択し PHPバージョンの欄を確認してください。

php7.0-fpmを停止して削除する

% sudo service php7.0-fpm stop
% sudo service php7.0-fpm status
% sudo apt list --installed | \
  grep ^php7.0 | \
  awk -F\/ '{print $1}' | \
  xargs -n1 sudo apt remove
% sudo apt list --installed | \
  grep ^php7.0 | \
  awk -F\/ '{print $1}' | \
  xargs -n1 sudo apt-get purge
% dpkg -l | grep ^rc | grep php7.0

以上です。お疲れさまでした~(*’▽’)ノ

WordPress Twentyseventeen 子テーマにGoogle Adsenseを差し込む

adsenseを出力するphpを作る

cd <WordPressの子テーマのディレクトリ>
mkdir -p template-parts/post/adsense.php
cat - > template-parts/post/adsense.php
---
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="略"
     data-ad-slot="略"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
---

single.phpを子テーマに持ってくる

cp ../twentyseventeen/single.php ./

single.phpを編集する

            <?php
            /* Start the Loop */
            while ( have_posts() ) : the_post();

                get_template_part( 'template-parts/post/content', get_post_format() );
                get_template_part( 'template-parts/post/adsense', get_post_format() );
                // If comments are open or we have at least one comment, load up the comment template.
                if ( comments_open() || get_comments_number() ) :
                    comments_template();
                endif;

※24行目の空白に「get_template_part( ‘template-parts/post/adsense’, get_post_format() );」を追加する