VanillaOS 3を試す

イメージ
以前仮想マシンで試したものの、あまり時間が取れず、しっかり使えていなかった。 余っている(テスト用においてある)Thinkpad x390に実際に入れて試してみた。 Vanilla OS ところが、サイトに行ってみると少し前(2026-08-24)にUpdateされており2→3へと2年ぶりの更新。 簡単に言うとイミュータブルなOSで、OS本体の書き換えは基本的にできず、A/Bパターンで起動する必要がある。 Aでインストールしたものは、Bに入れられ、起動時にBを選択するとインストール後の状態で使える仕組み。不具合があればまたAに戻せるというもの。 若干、コマンド類が変わってしまっているらしい。 イミュータブルなOSは、これまでにも試したものの日本語がうまく扱えないなど常用するには結構厳しいものがあった。 とはいえ、時間の経過で様々なアプリケーションがFlatpakやAppImageで出揃ってきたので、今回テストすることにした。 インストーラ自体は小さく、起動用のUSBに書き込んで起動すればOK。 インストール完了後、マシン名やユーザ名を入力することで、環境設定は完了。 基本的にはFlatpakでインストールするのが正しい使い方らしいので、必要そうなものを入れてみた。 vscode Brave Browser LMStudio DBeaver-ce Thunderird Obsidian opencode LibreOffice など・・・ どれも、サクサクと動作して気持ちいい。 日本語環境 さて、問題は日本語環境だが、調べてみるとflatpakにmozcもfcitx5も存在していた。 これんらばと思い、入れてみる。 https://note.kurodigi.com/vanillaos-fcitx5-mozc/ が、vanillaOS2の記事のようだけれども、同じ手順でOKだった。 すばらしい。 いつも使用しているmozcが動作するようになった。 ところが、LMStudioでハマった… flatpak特有の問題 LMStudioはすんなり入り、LMLinkでローカルのAIサーバも使用可能。 で、URLを指定したときにWEBサイトを取りに行かせて、処理させるMCPでハマった。 https://github.com/modelcontextprotocol/servers...

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を使う方法が分かった!