V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

カテゴリー: wordpress

CATEGORY ARCHIVE

wordpressのサイトヘルスでPHPが旧いと怒られたのでPHPを更新した。その際の実施メモ。

まだ、エラーが残っていたので追記(3.3)と一部追記(3.2) 2025/11/20

背景

本サイトでwordpressを運用しているが、サイトヘルスでPHPの版数が旧いので更新してください、と怒られていた。そこでPHPの更新に取り組んだが、それなりに大変だったの記録として残す事にした。
なお、OSがbusterのままだとPHPを更新出来なかったのでOSもバージョンアップした。

更新前の状況
OS: Raspbian buster PHP: ver. 7.4

更新後の状況
OS: Raspberry Pi OS bullseye PHP: ver. 8.4

第一段階 raspberry Pi OSのバージョンをbusterからbullseyeに更新

1.1 ソースリストの変更
1.1.1 sources.list中のbusterをbullseyeに変更する
   (security部分に一部フォーマットの変更もあり)

sudo nano /etc/apt/sources.list
下記の様になる様に変更する

deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free

1.1.2 sources.list.d/raspi.list中のbusterをbullseyeに変更する

 sudo nano /etc/apt/sources.list.d/raspi.list
 下記の様になる様に変更する

 deb http://archive.raspberrypi.org/debian/ bullseye main

1.2 OSを更新

sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade
sudo apt autoremove

sudo apt install zstd
(bookwormに更新時必要になるのでついでにインストールしておく)
 
sudo reboot

1.3 xrdpがブルーの画面のままとなる場合の対応

こちらのサイトを参照
https://raspberrypi.stackexchange.com/questions/133425/connection-problem-giving-up-on-xrdp-with-raspberry-pi-os-11-bullseye

第2段階 PHPをバージョンアップ

2.1 おまじない

sudo apt update
sudo apt upgrade

2.2 サービス一時停止

sudo systemctl stop mariadb.service
sudo systemctl stop php7.4-fpm.service
sudo systemctl stop apache2.service

2.3 PHP類インストール

sudo apt install php php-mbstring php-gd php-mysql php-pspell
sudo apt install php-xml php-xmlrpc php-fpm php-curl php-imagick php-zip php-intl

バージョン確認
php -v

2.4 インストール中のメッセージ内で言われたとおりの事を行う

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm

sudo systemctl reload apache2
sudo systemctl restart apache2

第3段階 PHP8系とwordpressの相性の悪さに対応

wordpressを表示しようとしたところ、fatalエラーや表示されない問題が発生したので対処

3.1 Fatalエラー対策 functions.php

create_functionがPHP8で削除され無くなったらしく、無名関数で対応

 sudo nano  wp-content/themes/使用しているtheme/functions.php
 
 add_action('widgets_init', function(){register_widget("My_Widget_Meta");});

下記を上記の様に書き換える
# add_action('widgets_init', create_function('', 'return register_widget("My_Widget_Meta");'));

3.2 内容が表示されない問題対応 single.php, index.php, archive.php

クォーテーションで囲まれてないと「Use of undefined constant」というエラーになる様になった。自作のPHPファイルなのでその様なところが残っていた。 自作でなければ必要ないかも

 sudo nano wp-content/themes/使用しているtheme/single.php

下記の場合、DATA_W3Cをシングルクォートで囲む様に書き換えた。

          esc_attr( get_the_date( 'DATA_W3C' ) ); ?>">

同様にindex.php  と archive.php 内の DATA_W3C をシングルクォートで囲む。

         esc_attr( get_the_date( 'DATA_W3C' ) ); ?>">

3.3 他にhtml5とコメントで名前とメールが入力必須になっているかの判断のところうまく動かなくなっていたので、そこを暫定的に決め打ちした  cooments.php

comments.php の先頭に下記を追加

 <?php
  $aria_req = " aria-required='true'" ; 
 ?>

comments.php で$html5 を使っているところを使っていることに決め打ちする。
下記
 '<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . 
下記の様にする
  '<input id="email" name="email" ' . 'type="email"'  . ' value="' .

おしまい

これで、復活し、wordpressのサイトヘルスでも怒られなくなった

dual lan構成のミニPCにipfireを実装し、既存webサーバー用のutmに仕立てる

背景

最近intel n100搭載のミニPCが話題になっている。dual lan搭載の品もあったので、セキュリティ強化のためにutmの構築を試してみようと考えた。 記録として残す。

ミニPCの仕様概略

CPU: Intel n100 メモリー: DDR5 16GB Lan: 1G x 2 wi-fi(※): 2.4G/5G
追加でSSD増設済み

※ 技適マークがついている事確認済み

現構成イメージと予定構成イメージ

事前に確認必要な点

1. ミニPCのLANポートのMACアドレス 及び wifiカードのMACアドレス
   (ミニPCのwindowsから、ipconfig /all にて確認)

2. wifiカードの品名・サポートするwifi規格・サポートするwpa種別

   ・品名は直接目視か、デバイスマネージャーから調べる
   ・wifi規格は、wifiカードだけでなく制御用PCについても確認
   ・wpa種別についても、wifiカード及び制御用PCについても確認
    (netsh wlan show driversで、ノートPCがwpa3を未サポートであった)

3. SSD増設
   (ipfireのインストールでデバイスをまるまる使うので増設が必要)

ipfireのインストール

一般的な手順にて増設したSSDにインストール

書き込みツール: rufus
ダウンロードサイト: https://www.ipfire.org/

ipfireのsetup

ブートから始める

ローカルドメインネームは何でも良さそう。rootパスワードはコマンドやSSH用、adminパスワードはWebUI用  ファイルシステムはext4を選択する。

初期設定中に次のネットワーク設定に進む。 

ネットワークの最初の設定

初期化中もしくはその後のrootからのsetupコマンドで設定

1. Network configuration type
   Green + Red + Blue を設定。 最初はGreen + Red でしておいと後から変更も可

2. Drivers and card assignments
   MACアドレスでどれがどれか確認しながらGreen, Red, Blueに対してアサインしていく

3. Address settings
   Red, Greenに対して下記ページを参考に設定する
   ( https://wiki.ipfire.org/installation/step5 )

ネットワーク追加設定

1. hostapd addonを導入
   webuiから、Ipfire -> Pakfire と進みhostapd addonをインストール
   参考:https://teklager.se/en/knowledge-base/ipfire-wifi-blue-interface-configuration-instructions/
     :https://wiki.ipfire.org/addons/wireless

2. Blue用のwifiアクセスポイントの設定を行う
   webuiから、Ipfire -> WlanAP

   以下の様に設定していった
   SSID:
   HW Mode: 802.11gn とした。 最初、802.1acで失敗したため。
   HT Caps : [HT40-][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] とした。
         https://wiki.ipfire.org/hardware/networking/mpcie を元に類推して設定

SSHアクセスを可能にする

webuiで、System -> SSH access から、SSH Accessを有効にする。
なお、greenへのSSHアクセスは、blueのgatewayにSSH接続後そこからSSH接続する。

制御用PCからのwebui制御を可能にする

1. DHCPサーバーの設定
   Network -> DHCP Server からIPの範囲 等を設定する
   参考:https://wiki.ipfire.org/addons/wireless

2. blueゾーンにPCを登録する
   Firewall -> Blue Access から、MACアドレスとアサインするIPアドレスを登録する

3. BlueからGreenにアクセス可能にする
   Firewall -> Firewall Rules から、Incoming Firewall Accessの設定する。
   制御用PCのIPアドレスからGreenへのアクセスを許可する
   参考:https://wiki.ipfire.org/configuration/firewall/accesstoblue

サーバーへポート転送を行う

Firewall -> Firewall Rules から転送ルールを設定する
参考:https://wiki.ipfire.org/configuration/firewall/rules/port-forwarding/red_to_server_on_green

その他調整

1. サーバー側のIPアドレスを調節する。
   固定アドレスからDHCPによる設定に変更し、ipfire側からMACアドレスから新しく設定するIPアドレスを割り当てる様にする

2. サーバーのIPアドレスの変更に伴い、apacheの’.httaccess’ファイルでのアクセス制御を調整

3. サーバーのIPアドレス変更に伴い、サーバーへのアクセス用ファイルを調整(例:hosts)

各機を再起動してテストして終了。
次は、firewall機能を設定していく。

以前の設定を忘れていてwordpressにログイン出来なかった。その顛末

トラブル内容

PCが接続しているルーターを変えたところwordpressにログインできなくなってしまった。正確にいうと、wp-admin配下にアクセスする際に403エラーが発生する。

wireguardを外してもだめ。wordpress配下の.htaccessを見直してもダメであった。

判明した原因

セキュリティ強化のため、wp-admin配下にも.htaccessを設置してIPアドレスによるアクセス制限を行っていたのが原因。 新しいルーターに対応したIPアドレスを許可したところ解決。

カテゴリーを選択すると複数表示されるがそこから単独記事表示にできなかったため、単独記事に移れるようにタイトルにリンクを付けた

変更前

archive.phpでタイトル表示部が

<?php the_title();?>

であった。

変更後

<a href="<?php the_permalink();?>"><?php the_title();?></a>

に変更した。

参考にしたサイト

こちらのサイトを参考にさせていただいた
https://programmingnote.jp/archives/82

ロボットによるスパム対策としてSiteGuard WP Pluginを導入した。

背景

スパムであると思われるコメントが多数届く。同じアドレスからもくるのでロボットかと思う。それで、画像認証を導入する事にした

導入したプラグイン

以下のサイトを参考にしてSiteGuard WP Pluginにした

' https://ideasity.biz/si-captcha-anti-spam-captcha-replace

V6プラスだけで自宅サーバーをうまく設定出来なかったのでV6プラス+PPPoE(IPv4)にした。その備忘録である

背景

これまでADSLでinternet接続を行ってきていたがADSLサービス停止に伴い、光回線に変更した。V6プラス接続である。しかし自宅サーバーにてwordpressを運用していたが、V6プラスだとポート番号に制限があるため、デフォールトのままだとwordpress運用をあきらめざるを得なかった。そこで、いろいろ試して最終的にPPPoE(IPv4)接続もできる様にした。

失敗1 IPv6でサーバーに到達できず

 onu(prs300se)で、ipv6フィルタリングで透過が許可されていなくて出来なかった。これは、PR-S300SEのセキュリティーログで判明。 prs300seのIPv6フィルタリング設定で透過できる様にした。
(※最終形態では不要となった)

また、サーバーのファイアーウォールでIPv6からの受信を規制していたので必要分は開ける。

失敗2 インターネットに接続できず。

フィルタリング、最後の行ではあるがanyでtcpのinを拒否していたのがだめだった。この部分を削除したら、着信できた。

失敗3 wordpressがポート番号指定でうまく動作せず

ネットで調べて絶対パスから相対パスに変えてみたところ、画像表示は出来た。しかし、どうしてもリンクのところがうまくいかない。  結局、固定IPサービスを購入する事にした。

失敗4 pppoe(固定IP)にしても着信できず。


  ipv4フィルタリング以外にnatエントリーの設定が必要であった

最終形態 V6プラス+pppoe(ipv4)で接続成功

最終的に以下の設定で接続できた

構成イメージ図
  • v6プラスのメイン(ユーザーA)以外に、固定ip(pppoe(ipv4))(ユーザーB)を用意する。
  • hubを用意する
  • hubにNTTからのルーター機能付きonu(prs300se)と、v6プラス用ルーター(プロバイダーからレンタルされたもの:ルーターA)と元からあったipv6対応ルーター(ルーターB)を接続する。
  • ルーターAをV6プラスの接続に設定する(ユーザーAで接続される)
  • ルーターBをpppoeルーターとする。接続先は、ユーザーBで設定する。

動作がおかしいときは、変更したONUやルーターを再起動してみる

参考:機器構成

  • ONU   : PRS300SE
  • ルーターA: Aterm WG2600HS2 (プロバイダーかNTTから送られてきた)
  • ルーターB: TP-LINK Archer c80 (安価なIPV6対応ルーターなので選んだ)
  • HUB : Elecom EHC-G05PA2-W (安価で、かつGbit対応だったので選んだ)

※ lanケーブルは全てカテゴリー5E以上にした。カテゴリー5は100Mbpsまで。
  その他注意:ipv4フィルタリングとnatエントリーを確認

V-antena and Tanimoto's page

あなたはIPv4でアクセスしています