カテゴリー: 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エントリーを確認
投稿ナビゲーション