木簡は平安時代の文書や帳簿まで現存し読解可能なケースがあるが、デジタルデータは保存期間が限られる。
アナログデータ(磁気テープなど)は再生機器の存続が不可欠で、機器が無いとデータにアクセスすることはできない。
デジタルデータはファイル形式(フォーマット)の進化が非常に速かったりHDDが壊れてしまえば内容を読み解くことはできない。
将来に渡って情報を残したい場合は石や木に彫るしか無いのか……
僕は「さくらインターネット」のレンタルサーバーを長年利用している。
ただしMySQLは5.1、5.5、5.7、PHPは7.4、Pythonは3.8を未だに利用している。
バージョンアップしないと、Pythonも未だ2.7しか使えない。
重要な設定も沢山出てる。
移行ツールを使って更新すると高速に動作するサーバーに移行できるらしい。
でもDBバージョンが古いので、移行できなかった。
毎年恒例の年末年始サイトのアップデートを実施するか……
国外IPアドレスフィルタ
海外に在住など、国外IPアドレスから対象機能へアクセスが必要な方は制限を「無効」にしてください。
という項目。
海外出張や長期滞在、海外赴任だってありえる会社に勤めているので、こんなのは設定できない。無視。
WAFの設定
WAFは「ワフ」と読み、Web Application Firewall(ウェブアプリケーションファイアウォール)のこと。
WAFの提供形態は「ソフトウェア型」「アプライアンス型」「クラウド型」の3つに大別される。
これも設定しろって。したけどさ。
MySQLのアップデート
これが少し怖い。データ消えたら全てが終わり。
だからずっと放置していた……。
ただMySQLはWordPressでしか利用してないので、wp-config.phpの中で次の記述部分を探し書き換えれば終わりだ。
1 2 3 4 |
define('DB_NAME', 'DB名'); define('DB_USER', 'DBユーザ名'); define('DB_PASSWORD', 'パスワード'); define('DB_HOST', 'DBホスト名'); |
「FreeBSD」のバージョンを13.xにアップデート
ようやく移行が可能となった。
朝9:00頃にボタンを押したら、終わったのは15:18。長かった……
SSD化をはじめとした機材の刷新により高速に動作する現行のサーバーへ移行を簡単に行える機能です。
本機能の利用は無料で、契約中の料金も変更はありません。
移行ツールの詳細についてはこちらをご確認ください。
お客様のサーバーは最新のサーバーをご利用されています。2024年12月28日に移行が完了しております。
PHP 7.4から8.3にアップグレード
で、次にPHP8.3へのアップデート。
既に PHP 7.4は非サポート。
PHP7.4 (モジュールモード)から 8.3 (モジュールモード)に変更すると色々な問題が発生した。
プラグイン Crayon Syntax Highlighterが利用できない
次のようなエラーがでてサイト自体が見れなくなった。
1 2 3 4 5 6 |
Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.php:73 Stack trace: ... #18 {main} thrown in /wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.php on line 73 このサイトで重大なエラーが発生しました。 |
ぐぐってみると後継の「Urvanov Syntax Highlighter」に変更することが多いっぽい。
面倒なので「Crayon Syntax Highlighter」を更新して対応する。
コードの修正 crayon_util.class.php
エラーの原因は、PHPのバージョン間での型の厳格化によるもの。
具体的には、implode()
関数の第2引数に文字列が渡されているため。
wp-content/plugins/crayon-syntax-highlighter/util/crayon_util.class.php の該当箇所(73行目)を修正した。
修正前
1 |
$lines = implode($lines, $delimiter); |
修正後
1 2 |
// 引数を逆にする $lines = implode($delimiter, $lines); |
第一引数がseparatorで第二引数がarray。逆だと8.0ではサポートされない。
コードの修正 crayon_langs.class.php
まだ問題が発生した。
1 2 3 |
Fatal error: Uncaught TypeError: get_class(): Argument #1 ($object) must be of type object, null given in /home/ukyo/www/nehori/nikki/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 414 このサイトで重大なエラーが発生しました。 |
次のように修正。
修正前
1 2 3 4 5 6 7 8 9 10 11 |
// Retrieve by element name or set by CrayonElement function element($name, $element = NULL) { if (is_string($name)) { $name = trim(strtoupper($name)); if (array_key_exists($name, $this->elements) && $element === NULL) { return $this->elements[$name]; } else if (@get_class($element) == CRAYON_ELEMENT_CLASS) { // ここでエラーがでる $this->elements[$name] = $element; } } } |
修正後
1 2 3 4 5 6 7 8 9 10 11 12 |
function element($name, $element = NULL) { if (is_string($name)) { $name = trim(strtoupper($name)); if (array_key_exists($name, $this->elements) && $element === NULL) { return $this->elements[$name]; } else if ($element !== NULL && @get_class($element) == CRAYON_ELEMENT_CLASS) { $this->elements[$name] = $element; } else if (@get_class() == CRAYON_ELEMENT_CLASS) { // $element === NULLなら引数は渡さない $this->elements[$name] = $element; } } } |
エラーの原因はget_class。
これはオブジェクトのクラス名を返す関数だけど、明示的に null を渡すことは、 許されなくなりなった。
そこでelement関数の第二引数でNULLが渡されたり、省略された場合はget_class($element)ではなくget_class()とする。
cocoon目次ショートコードが表示されない
このWordpressのデザインは「cocoon」を利用しているが、目次が出なくなった。
次のようにwp-content/themes/cocoon-master/lib/toc.php を修正した。
1 2 |
- $level = strtolower($headers[1][0]); + $level = intval(strtolower($headers[1][0])); |
1 2 |
- return ($h_count >= $display_count); + return (intval($h_count) >= $display_count); |
おわりに
恒例の年末年始の大幅メンテナンスは完了した。
公式のPythonバージョンは未だに3.8。
既にサポート終了なのに、そこは「重要な設定」として問題が出ないのねww