PHPのextension呼出しでundefined functionが発生(Windows wsl(Ubuntu))

Windows wslのUbuntuでphpのextensionをcall(curlやxmlのパース)すると「undefined function」が発生。
PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in ...
PHP Fatal error:  Uncaught Error: Call to undefined function simplexml_load_string()

Macだと適当に全部入りでやってくれるけどLinux系は個別にextensionをinstallする必要がある。
$ sudo apt install php

$ sudo apt install php-curl
$ sudo apt install php7.4-xml

パッケージを探す場合は、searchしてgrepするのが簡単。
$ apt search  php| grep xml
php-xml/focal 2:7.4+75 all
php-xml-htmlsax3/focal 3.0.0+really3.0.0-4 all
php-xml-rpc2/focal 1.1.3-0.1 all
php-xml-svg/focal 1.1.0-2 all
php-xmlrpc/focal 2:7.4+75 all
php7.4-xml/focal-updates,now 7.4.3-4ubuntu2.6 amd64 [installed]
php7.4-xmlrpc/focal-updates 7.4.3-4ubuntu2.6 amd64
  extract cluster node data from remote xmlsysd daemons
xmlsysd/focal 2.6.0-0ubuntu5 amd64

extensionの設定は、「/etc/php/」にある。
$ pwd
/etc/php/7.4
$ tree -d
├── apache2
│   └── conf.d
├── cli
│   └── conf.d
└── mods-available
もし、インストールしているのに使えない場合は、「extension=」の行がコメントアウトされてないか確認。
$ cat /etc/php/7.4/cli/conf.d/20-curl.ini
; configuration for php curl module
; priority=20
extension=curl.so


emacsのelpyで「Your ‘python-shell-interpreter’ doesn’t seem to support readline・・・」のエラー

emacsのelpyで下記のエラーが発生。

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native-enable’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list. Native completions have been disabled locally.


python3が「python-shell-completion-native-disabled-interpreters」に含まれていないのが原因。

と、いうことで、「M-x elpy-config」で設定。
下の方にある「Option」→「Python」→「python-shell-completion-native-disabled-interpreters」を選択。


「INS」にenterで「python3」を追加。


シェルのdateコマンド(Linux、MacOS/FreeBSD)の演算いろいろ

dateコマンドはLinux系とMacOS/FreeBSD系でパラメータが全然違うのでよく使うものをまとめ。追々追記。

dateコマンドのバージョン

MacOS
$ uname -a
Darwin MacbookM1 Darwin Kernel Version 20.3.0: Thu Jan 21 00:06:51 PST 2021; root:xnu-7195.81.3~1/RELEASE_ARM64_T8101 arm64
$ man date | tail -3
     A date command appeared in Version 1 AT&T UNIX.

BSD                               May 7, 2015                              BSD

Linux
$ uname -a
Linux XXX 4.14.94-164.ELK.el6.x86_64 #1 SMP Wed Jan 16 16:56:35 CST 2019 x86_64 x86_64 x86_64 GNU/Linux
$ date --version
date (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

任意日付の指定方法

MacOS
-j : 任意日付の指定ありの場合、-jオプションをつける
-f : 入力日付のフォーマット
最後の"+〜"は、出力フォーマット
$ date -jf "%Y-%m-%d" 2021-03-01 "+%Y%m%d"
20210301
フォーマットが一致しないとエラーとなる
$ date -jf "%Y-%m-%d" 2021/03/01 "+%Y%m%d"
Failed conversion of ``2021/03/01'' using format ``%Y-%m-%d''
date: illegal time format

Linux
Linux(GNU coreutils)のdateコマンドは入力日付のフォーマットを勝手に解釈してくれて便利。
"+〜"は、出力フォーマット。位置は、前でも後ろでもOK。MacOSだと最後に指定しないとエラーになる。
$ date "+%Y-%m-%d" "-d 20210301"
2021-03-01

$ date "+%Y-%m-%d" "-d 2021-03-01"
2021-03-01

$ date "+%Y-%m-%d" "-d 2021/03/01"
2021-03-01

$ date "-d 20210301" "+%Y-%m-%d"
2021-03-01

日付の演算(加算・減算)、前日・翌日の取得

MacOS
-v : 日(d)/月(m)など複数指定可能
複数指定した場合は、最初のパラメータから計算されていくので、「-v-1d -v-1m 」と「-v-1m -v-1d」では結果が異なる。
前日(−1)を取得
$ date -v-1d -jf "%Y-%m-%d" 2021-03-01 "+%Y%m%d"
20210228

1日前のさらに1か月前を取得
$ date -v-1d -v-1m -jf "%Y-%m-%d" 2021-03-01 "+%Y%m%d"
20210128

1か月前の1日前を取得
$ date -v-1m -v-1d -jf "%Y-%m-%d" 2021-03-01 "+%Y%m%d"
20210131


Linux
-d にそのまま続けて加減算の日/月を指定
減算の場合は、「1 day ago」とか「1 month ago」とか。MacOSの場合と違って順番は関係ない様子。
$ date "+%Y-%m-%d" "-d 20210301 1 month ago 1 day ago"
2021-01-31

$ date "+%Y-%m-%d" "-d 20210301 1 day ago 1 month ago"
2021-01-31


日付の計算(加減算)を行う場合、どちらが便利なのかは微妙な感じがする。MacOS/FreeBSDの方が便利そうだがバグを生む原因にもなりそう。


カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
275位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
47位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm