PC設定覚書と雑記

1. php8にまだ対応してないアプリケーションへの処置

投稿日時: 2022/03/04 okamoto

 先日、Netcommons3のヴァージョンを、3.3.4から3.3.5に上げようと、いつもの手順で作業していました。

しかし、今まで見たこともないエラーが・・・

しばらく考えていましたが、情報も得られずエラーメッセージも分からない。

でも、もう一度良く見てみると、

 

Error: ReflectionMethod::__construct(): Argument #2 ($method) cannot be null when argument #1 ($objectOrMethod) is an object
> #0 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/Shell.php(358): ReflectionMethod->__construct()
> #1 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/Shell.php(423): Shell->hasMethod()
> #2 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php(222): Shell->runCommand()
> #3 /var/www/html/vendors/cakephp/cakephp/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch()
> #4 /var/www/html/app/Console/cake.php(35): ShellDispatcher::run()

 

phpの動きに問題?

このサーバーのphp環境は7.4だったはずなんですが、調べてみたらなんと8.1に上がっていました!

こまめにOSのアップデートをしていますが、その時にphpもアップデートされてしまうのは知りませんでした。

最初にOSインストールした時、phpのリポジトリ登録は手作業でやったんですが、この関係?

ここで、Netcommonsプロジェクトにメールで相談してみました。

手掛かりがなければ、phpを元の7.4に戻してみようと思っていました。

ところが何と!

嬉しいことに、すぐ返信が届いたんです!

「Netcommons3はphp8に対応させる予定はあるが、まだ見通しが立っていません」

「サーバーをphp7環境に戻して使って下さい」

この情報で、対処の見通しがつきました!

 

# update-alternatives --config php

このコマンドを実行すると、出力は、

 

選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/bin/php7.4 74 自動モード
1 /usr/bin/php7.3 73 手動モード
2 /usr/bin/php7.4 74 手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください

 

といった感じでメッセージが出るので、

希望するヴァージョンのphpを選んで番号を入力、Enterすれば使用phpの切り替えが簡単に出来ます!

この後Netcommonsのヴァージョンアップの作業を再度やってみたら、無事にアップデート完了しました!

Netcommonsプロジェクトの中島様、それからプロジェクトの皆様、

本当にありがとうございました!