FujiSSLから「サーバー証明書の有効期限が迫ってますよ〜」とメールが来ていたので更新することにした。
“サーバー証明書の更新” の続きを読む
PHP8へのupgrade失敗
serverのportsをupgrade
長いことWordPressのダッシュボードに
PHP とは何ですか ? サイトにどう影響しますか ?
PHP は、WordPress の構築に使用されるプログラミング言語の1つです。PHP の新しいバージョンは、定期的にセキュリティ更新を受け取り、サイトのパフォーマンスを向上する可能性があります。 PHP の推奨バージョンは 8.3 以上です。
と出ていた。
なので最新のphp8.4に入れ替えることにした。
序でにMacPortsのselfupdateとupgrade outdatedをしたら、WordPressが動かなくなった。
理由は簡単MySQL8がコンパイルに失敗し、mysqliが動かなくなってしまったから……
(中身はMariaDBなんだけどな、使っている側は関係ないよな)
コンパイルエラーのメッセージはこうだった。
|
1 2 3 4 5 6 7 8 9 10 |
/opt/local/libexec/llvm-17/bin/../include/c++/v1/ctime:82:1: note: using declaration annotated with 'using_if_exists' here 82 | using ::timespec_get _LIBCPP_USING_IF_EXISTS; | ^ /opt/local/var/macports/build/mysql8-2312cd8d/work/mysql-8.4.6/storage/ndb/src/common/portlib/NdbTimestamp.cpp:171:34: error: use of undeclared identifier 'TIME_UTC' 171 | require(std::timespec_get(&ts, TIME_UTC) == TIME_UTC); | ^ /opt/local/var/macports/build/mysql8-2312cd8d/work/mysql-8.4.6/storage/ndb/src/common/portlib/NdbTimestamp.cpp:171:47: error: use of undeclared identifier 'TIME_UTC' 171 | require(std::timespec_get(&ts, TIME_UTC) == TIME_UTC); | ^ 3 errors generated. |
TIME_UTCが定義されていないと言う。
TIME_UTCってなんだ?と調べたら、C11以降に実装されたらしく(意味解っていない)、一部のプラットフォームで定義されているらしい。
因みにMacOSでは定義されていないそうだ。(どうすんだよコレ)
該当箇所は
/opt/local/var/macports/build/mysql8-2312cd8d/work/mysql-8.4.6/storage/ndb/src/common/portlib/
だったので、其処のCMakeLists.txtに
SET(TIME_UTC 1)
を一行追加したりする。
って言うか、もう/opt/local/var/macports/build/mysql8-2312cd8d/work/build/
まで行って、makeしているんですがね……
できませんねぇ。(まぁ、理解しない儘書き込んだだけですからねぇ)
githubから古いのをインストールする方法が『39 MacPorts で古い port をインストールする』に書いてありました。
やってみましょう。
/opt/local/var/macports/build/内にmysql81ディレクトリを作りその中での作業にしました。(場所はvarなら良いかなと)
ここに書かれていた「git clone –single-branch https://github.com/macports/macports-ports.git」が無茶でかいファイルを落とします。結構な時間が掛かります。
次に出来上がったmacports-portsに入りmysql81を入れることにします。(理由は特にない)
sudo git checkout 2d10ee81d776b71e12c114f7cfb54263667e5765
checkoutの後ろの文字列は
https://github.com/macports/macports-ports/commits/master/databases/mysql8
ここで探した最新(version 8.4.1)以外の一番新しいもの『mysql8, mysql81: migrate to OpenSSL 3』と言うのがたまたま見つかったから。
其処のURLの最終部分です。
それから、database/mysql81へと移動。
sudo port install
したら出来上がり?
ダメでしたあぁ。
|
1 2 3 4 |
---> Computing dependencies for mysql81 The following dependencies will be installed: clang-16 +analyzer llvm-16 |
とllvm-16が必要。でもinstallできない。
port select llvm
すると
|
1 2 3 4 5 6 7 8 9 10 |
Available versions for llvm: mp-llvm-10 mp-llvm-11 mp-llvm-15 mp-llvm-16 mp-llvm-17 (active) mp-llvm-19 mp-llvm-19.mp_1738546778 mp-llvm-9.0 none |
と出てきたので、
sudo port seelect llvm mp-llvm-16
で解決。
次に
port select clang
すると
|
1 2 3 4 5 6 |
Available versions for clang: mp-clang-11 mp-clang-17 mp-clang-19 (active) mp-clang-9.0 none |
clang-16はなかったので、インストールすることに。
そうしたら、またllvm-16をインストールしようとしてコケる。
なんでや?
結局、TimeMachineから/opt/local以下を復元することにした。
取り敢えずmysqliは動くようになった。
しかし、PHPは古くなっちゃってインストールのし直しだ(涙)
php8は無事に動くようになった?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
port list outdated Warning: The 'list' action only shows the currently available version of each port. To see installed versions, use the 'installed' action. apr @1.7.5 devel/apr clang-17 @17.0.6 lang/llvm-17 libomp @21.1.1 lang/libomp libunistring @1.4 textproc/libunistring llvm-17 @17.0.6 lang/llvm-17 llvm-19 @19.1.7 lang/llvm-19 mesa @25.2.3 x11/mesa meson @1.9.1 devel/meson mysql8 @8.4.6 databases/mysql8 p5.34-authen-sasl @2.190.0 perl/p5-authen-sasl p5.34-dbd-mysql @5.13.0 perl/p5-dbd-mysql p5.34-file-temp @0.231.200 perl/p5-file-temp p5.34-json-xs @4.40.0 perl/p5-json-xs p5.34-libwww-perl @6.800.0 perl/p5-libwww-perl p5.34-mail-spamassassin @4.0.2 perl/p5-mail-spamassassin p5.34-mce @1.902.0 perl/p5-mce p5.34-net-dns @1.530.0 perl/p5-net-dns p5.34-net-http @6.240.0 perl/p5-net-http p5.34-net-patricia @1.230.0 perl/p5-net-patricia p5.34-perl-tidy @20250912 perl/p5-perl-tidy p5.34-pod-simple @3.470.0 perl/p5-pod-simple p5.34-ppix-regexp @0.90.0 perl/p5-ppix-regexp p5.34-scalar-list-utils @1.700.0 perl/p5-scalar-list-utils p5.34-term-table @0.25.0 perl/p5-term-table p5.34-test-simple @1.302.214 perl/p5-test-simple p5.34-uri @5.340.0 perl/p5-uri py312-libxml2 @2.13.9 python/py-libxml2 py312-meson @1.9.1 python/py-meson py312-pygments @2.19.2 python/py-pygments py312-setuptools @80.9.0 python/py-setuptools py313-libxml2 @2.13.9 python/py-libxml2 py313-lxml @6.0.2 python/py-lxml py313-meson @1.9.1 python/py-meson xorg-libX11 @1.8.12 x11/xorg-libX11 xorg-libXfixes @6.0.2 x11/xorg-libXfixes |
上記をport upgrade outdatedするとmysql8のインストールでエラーが出て、5.7に戻せなくなる。(この為、何度となくTimeMachineにお世話になった)
最終的に残ったのは、
|
1 2 3 4 5 6 7 |
port list outdated Warning: The 'list' action only shows the currently available version of each port. To see installed versions, use the 'installed' action. clang-17 @17.0.6 lang/llvm-17 mysql8 @8.4.6 databases/mysql8 p5.34-authen-sasl @2.190.0 perl/p5-authen-sasl p5.34-dbd-mysql @5.13.0 perl/p5-dbd-mysql p5.34-mail-spamassassin @4.0.2 perl/p5-mail-spamassa |
となった。
clang-17はerrorを吐いて終わる。
p5.34-authen-saslは“p5.34-crypt-urandom: Image error”で終わる。
他も似た様なもの……仕方がないので放っておく。
う〜ん、phpのversionが上げられない。(涙)

