SSHで接続できない

イメージ
 Ubuntuを24.04→26.04 時間があったので、メインマシンのUpgradeを実施。 とはいえ、とはいえ、システムディスク(/)とデータディスク(/home)を分けているのでクリーンなインストールを実施。 (1) USBでUbuntu26.04を起動 (2) /home/user → /home/user_old にリネーム (3) 26.04をインストール これで、/home/user_oldにこれまでの環境が残ったまま、新規userでインストールすれば完了。もともとのuserが使用していたuser_id:1000のままなので、どちらのフォルダも見ることができる。 あとは、使用するソフトをインストールし  /home/user_old 以下から、利用する設定ファイル等をコピーして動作確認するだけ。 Dropbox MEGA などは、先にコピーしてから、フォルダ同期設定をすることで、ダウンロードなどはチェックのみで完了する。 thunderbird brave browser vscode dbeaver-ce typora obsidian LMStudio ollama あたりを移行してほぼ終了 .sshはそのままコピーして完了。 と思っていたら、何故かサーバによっては接続できない場合があることに気づいた。 $ ssh vps 何も返ってこず、接続できない。 でこれまで接続できていたのに、うまく行かない?? 詳細を確認しながら、チェックすることに。 $ ssh -vv vps debug1: OpenSSH_10.2p1 Ubuntu-2ubuntu3.5, OpenSSL 3.5.5 27 Jan 2026 debug1: Reading configuration data /home/user/.ssh/config ︙ debug2: we sent a publickey packet, wait for reply debug1: Server accepts key: /home/user/.ssh/id_rsa RSA SHA256:n5ocPbCvMV4FGFof … … … … … pBuJ/8r/kHGANY explicit agent のように、 認証完了後にシェルが起動せず、応答がない状態になっている。 具体的には ...

PHP でなぜかjsonエラー

外部サーバ上では動作

 サーバに設置されているコードをテストしていて、おかしなエラーが出ることに気づいた。

Message: Call to undefined function json_encode()


って、何で?って感じ…。


今回、新たに立てたVPSでは、Ubuntu20.04 + Apache2 + PHPで問題なく動作している。

その前のサーバも、同様な構成で動作している。


いつも使っているLocalマシン上で動作しない。



気持ち悪いし、テストできないので、原因追及をする。

このマシンだけは、2年前ほどに新規に調達したマシンで、当初よりUbuntu18.04で運用。

昨年20.04にdist upgradeしたマシン。

Cleanに入れてはいないので、その影響かも…。


phpinfo()を実行すると、jsonの項目がない。

そりゃ、動かないよね。


そこで、端末から念の為、入れてみる。

$ sudo apt install php7.4-json
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
php7.4-json はすでに最新バージョン (7.4.27-1+ubuntu20.04.1+deb.sury.org+1) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。


おや?入っているという。

$  sudo apt list | grep json
php-json-schema/focal,focal,now 5.2.9-1 all [インストール済み、自動]
php-json/focal,focal,now 2:8.0+91+ubuntu20.04.1+deb.sury.org+1 all [インストール済み]
php-services-json/focal,focal,now 1.0.3-1build1 all [インストール済み]
php5.6-json/focal 5.6.40-57+ubuntu20.04.1+deb.sury.org+1 amd64
php7.0-json/focal 7.0.33-57+ubuntu20.04.1+deb.sury.org+1 amd64
php7.1-json/focal 7.1.33-44+ubuntu20.04.1+deb.sury.org+1 amd64
php7.2-json/focal,now 7.2.34-28+ubuntu20.04.1+deb.sury.org+1 amd64 [インストール済み、自動]
php7.3-json/focal 7.3.33-1+ubuntu20.04.1+deb.sury.org+1 amd64
php7.4-json/focal,now 7.4.27-1+ubuntu20.04.1+deb.sury.org+1 amd64 [インストール済み]
php7.4-json/focal 7.4.26-1+ubuntu20.04.1+deb.sury.org+2 i386


確かにインストール済みだ…。

phpinfo()で設定ファイルの差分を確認すると、

この項目がローカルマシンにのみ存在しない。


むむむ。

ということで、自分で作成してやればOKのはず。
中身は、
$ cat 20-json.ini
; configuration for php json module
; priority=20
extension=json.so

これだけなので、エディタで書いても良い。
ただ、このディレクトリはすべてリンクで生成されているので、同じようにしておけば後々変な挙動を示さないはず。

$ ll
合計 12
drwxr-xr-x 2 root root 4096  1月  4 18:09 ./
drwxr-xr-x 3 root root 4096 10月 30 12:59 ../
lrwxrwxrwx 1 root root   39  7月 10  2020 10-mysqlnd.ini -> /etc/php/7.4/mods-available/mysqlnd.ini
lrwxrwxrwx 1 root root   35  7月 10  2020 10-pdo.ini -> /etc/php/7.4/mods-available/pdo.ini
lrwxrwxrwx 1 root root   35  7月 10  2020 15-xml.ini -> /etc/php/7.4/mods-available/xml.ini

すべて、mods-availableからのリンクになっているのを確認したので、同様にjson.iniを作成する。

$ sudo ln -s /etc/php/7.4/mods-available/json.ini 20-json.ini

これで完了。
中身も同一なのを確認する。

あとは、apacheを再起動して、動作確認すれば動くはず。

$ sudo service apache2 restrat


この後、ブラウザからテストしたいコードを開いてみると、正常に動作した。

しかし、なぜ、このファイルが無くなっていたのか…。
消えたファイルの情報は探せないので、まぁ仕方ない。

でも、動くようになってε-(´∀`*)ホッ



コメント

このブログの人気の投稿

MEGAにも弱点があった?

Ubuntu24.04 でGUIが死んだ

VirtualBoxでUSBを使う方法が分かった!