CIOが増殖中

イメージ
急速充電器が増えてきて面倒…  スマートフォン、ノートPCなど増えてきて、標準の充電器ってかさばるし、持ち運ぶのも邪魔。 そこで、電源タップ付きのものや、小形でMacbookProに充電できるものを探して購入。 気づいたら、CIO製品が増加していた。 持ち運び用 (1)  https://amzn.to/4d83MBV (2)  https://amzn.to/3P3B9xZ 自宅用 (3)  https://amzn.to/42WLezS どれも、それ程かさばらず、重宝しています。 電源タップが必要な場合は、(2)を持っていくけれど、ほとんどの場合は(1)のみでOK。 1ポートなら67W出力可能なので、全く問題なし。 2ポート以上使用しても、45W出力してくれるので、困ることはない。 (2) の場合は、延長ケーブルも持って歩くことが多いかなぁ。 1m程のケーブルが有ると、電源が取りにくい場所でも、なんとかなる。 という感じです。 ゼロハリのアタッシュケース自体が重いので、なるべく軽くするために(1)が常用です。 UGREENとかAnkerとかも良さそうなだけど、今の所CIOばかり増殖していますねぇ。

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


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

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

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



コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?