キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

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


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

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

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



コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Ubuntu24.04 でGUIが死んだ