先に apache の話から。

apache を 2.4.5.7 から 2.4.5.8 にしたら、 module を読み込む extension を読み込まなくなった。

extension_dir = "ext"

と表記していたのを、

extension_dir = "c:/***/php8.3.1/ext"

のように絶対パスに変更したら読み込むようになった。何らかの内部的な動作の変更があったのだろうが、相対パス表記では動作しなくなった。


次に php の話。

php を、 8.2.11 から 8.3.1 にしたら、 rnote.php の2098行目付近の、

function Plugin($name,$func,$opt){
if (phpversion() < "6.0.0"){
      static $g_plugin = '';
} else {
      static $g_plugin = array();
}

が、エラーになった。

php.net の PHP RFC: Arbitrary static variable initializers によると、

‘Backwards incompatible changes’ として、

Currently, redeclaring static variables is allowed, although the semantics are very questionable.

(現在、static 変数の再宣言は許可されているが、この論理的な意味は非常に疑問)

ということで、 static 変数の再定義を認めないように変更されたからだ。

しかし、上の例のように php のバージョンにより異なる動作をする部分を条件文で切り分けることができなくなってしまった。有用な機能だと私は思うのだが、不許可にされたらどうしようもない。

function Plugin($name,$func,$opt){
      static $g_plugin = (phpversion() < "6.0.0") ? '' : array();

という書き方に変更した。

今後もこういう変更が増えると思うと、 rnote-re のコードも、そろそろ php6 以前のバージョンへの対応をやめてもいいのかも知れない気がした。

キーワード: rnote-re