Moodle の管理をしていて、ハマった事項を解決したので共有します。
「言語パック」をクリックすると環境によってエラーになる問題です。
Moodle のダウンロードサイトから https 通信により curl コマンドで言語パックファイルをダウンロードしようとして、エラーになってしまうのです。AWSのインスタンスで、出たり出なかったりしました。
プログラムの動作としては、curl コマンドを内部で実行しているのですが、デバッグ
してみたところ、lib/filelist.php で以下のように PHP の curl エラーになっています。
[77] => 'CURLE_SSL_CACERT_BADFILE',
要すれば、curl が俺が使うためのCACERTファイルがない、と文句を言っているようです。
以下のサイトから、最新の cacert.pem をダウンロードして、一連の CACERT の仲間に
加えてあげることで、直りました。
(リンク)
https://curl.haxx.se/docs/caextract.html
たまに次の手順をやってあげる必要がありそうです。
- 上記リンクからダウンロードした最新の .pem ファイルを以下にコピー。
/etc/pki/ca-trust/source/anchors
- 次のコマンドを実行
# update-ca-trust
- サービスを再読み込み
# systemctl reload php-fpm
# systemctl reload httpd
(参考)
/etc/pki/ca-trust/source/README
(マニュアル)
man update-ca-trust
(PHP)
https://www.php.net/manual/ja/function.curl-errno.php
(関連)
https://stackoverflow.com/questions/23434792/php-curl-working-locally-error-77-on-aws-server
(近い)
https://gist.github.com/reinaldomendes/97fb2ce8a606ec813c4b