PC設定覚書と雑記

サーバー運用とPC日記

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

 先日、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プロジェクトの中島様、それからプロジェクトの皆様、

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

Sambaファイルサーバー仕上げ(追加)

 ファイルサーバーのリモート On Off ですが、電源 On は Windows クライアント側での WOL(フリーソフト)は使用感がとてもいいです。

初期設定の NIC の MAC アドレス取得とかも非常に楽で、すぐ使えるようになります。

ファイルサーバー側の OS が完全に立ち上がってから音を鳴らしてくれる機能も good です!

サーバー側が完全に立ち上がる前に Samba にアクセスすると、ファイルアクセスだけでなく、OS のコマンド操作、Webmin からのアクセスも出来なくなることがあるので。

さて、サーバーのリモート電源 Off ですが、SSH を使ってコマンドを打ち込むやり方しか思い当たりませんでした。

Webmin からでも電源 Off は出来ますが、手順が多くちょっとやっかいなんです。

そこで、

Windows クライアントに SSH クライアントソフト Rlogin(フリーソフト) を入れておきます。

初期設定はちょっとだけで済みます。

次回の接続からはログインまで自動です!

さて、そこからですが、自分ならいつも su- コマンドで root に遷移してからシャットダウンコマンドを打ち込んでいました。

今回は、ちょっとだけですが、より簡単な操作に出来そうだということで、使用ユーザーに権限が与えられる sudo コマンドを使うことにしました。

まず sudo をインストールし、sudoユーザーの設定ファイルを編集します。

 /etc/sudoers

ファイルに、権限を与えるユーザについての行を書き込んで保存します。

 # User privilege specification

の下に

 gonta ALL=(ALL:ALL) ALL

といった記述を書き込めば、ユーザー gonta には root 権限が与えられた上でコマンド操作が出来るようになります。

指定したコマンド操作をする時だけ root になれるということですね!

ユーザー gonta がサーバー機をリモートシャットダウンしたい時は、

 gonta@server :~$ sudo shutdown -h now

とコマンドを打ち込みます。

その後パスワード入力を求められるので、パスワードを打ち込めば命令が実行されます。

なんだ! 結構手間がかかるじゃないか! と思いますが、

コマンド操作の入力履歴は、キーボード「↑」を打てばワンタッチで出てくるんですね!

ですから、サーバーの電源 Off の操作は

 ① Rlogin を起動(タスクバーにアイコンを置いておくと良い)

 ②ログイン先をクリックしてログイン(自動)

 ③「↑」キーを1回押して、(sudo shutdown -h now を表示させて)「Enter」キーを押す

 ④パスワードを入力して「Enter」キーを押す

以上です!

面倒そうに見えますが、一連の流れでスムーズに操作出来ます!

Linux 系 OS での操作ですが、良かったら試してみて下さい。

Sambaファイルサーバー仕上げ

 Sambaのファイルサーバー機が嫁入りする前に、もう少し細かいところを手直ししてみます。

PowerOnにしたあと、まずはUEFIのpost画面が出ますが、この画面の表示時間を短くするには、UEFI設定で「fast」といった項目を選びます。

このマザーボードでは「ultrafast」設定がありました。

そしてUEFIがデバイスのチェックや初期化を終えると、OSのブートメニューが表示されます。

Debian11では、Grub2のブートメニュー画面ということになります。

このブートメニュー画面の表示時間がデフォルトでは結構長めなのでこの表示時間を短くしたいと思います。

 /etc/boot/grub/grub.cfg

ファイルを直接編集して、

 timeout = 5

等と書き換えて上書き保存しても上手くいきません。

起動時にファイルが書き戻されてしまいます。

 /etc/default/grub

ファイルを編集するようです。

 timeout = 1

と書き換えてみました。

このあと、

 # update-grub

を忘れずに。

これで、Power On から起動するまでの時間がかなり短縮されました!