小テストの追加ができません(内部サーバーエラーとなる)

小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿
返信数: 8

Windows Server 2012 R2
IIS 8.5.9600
modle 3.10+
PHP 7.3.22

動作環境のステータスはすべてOKとなっています。(その他チェックのHTTPSは未実装)


moodleのサーバチェックの設定画面です


この状況で、コースを開き編集モードにして「+活動またはリソースを追加する」を選択し、画面に表示される22種の活動またはリソースのうち、「小テスト」のみ内部サーバーエラーとなります。


内部サーバーエラーの画面です


ほかの活動またはリソースはすべて、次画面に遷移し設定を入力する画面になりました。

小テストの違いというのが何かあるのでしょうか。

少し前の投稿で、PHP7.4の未対応可能性が出ていましたが、その可能性は7.3.22でもあるものでしょうか。

Kazu K への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> 少し前の投稿で、PHP7.4の未対応可能性が出ていましたが、その可能性は7.3.22でもあるものでしょうか。

いいえ、MoodleがPHP 7.3.22に未対応である可能性は低いと思います。

可能でしたら、以下の情報をお教えください。

  • IISにModSecurity等のWAF (Web Application Firewall) をインストールしているか否か
  • Moodleに小テスト問題タイプ等の非標準プラグインをインストールしているか否か
  • Moodleを独自にカスタマイズしているか否か
Mitsuhiro Yoshida への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿
いずれもないと思います。
IISにModSecurity等のWAF (Web Application Firewall) をインストールしているか否か
閉域のLAN内に構築しており、標準以外のツールは入っていないと思います(以前から稼働しているサーバーなので、これまでの経緯などはわかりません。

Moodleに小テスト問題タイプ等の非標準プラグインをインストールしているか否か
追加で入れようと試みたのはテーマファイルぐらいで、それも断念したので、標準以外は入っていないはずです。

Moodleを独自にカスタマイズしているか否か
手引きやサイトを参考に、やっと稼働させているので、独自になにかした記憶はありません。ネット情報をみて、なにか施してしまっているかもしれません。

まだ、正式運用をしていおらず、一人で構築をしている段階で、ようやくコースを作っている段階です。
Kazu K への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

ありがとうございます。

よろしければ、以下の設定変更によりブラウザ上に表示されるエラーログをご確認ください。

  1. Moodleにサイト管理者としてログインする。
  2. 「管理 > サイト管理 > 開発 > デバッグ」ページに移動する。
  3. 「 デバッグメッセージ debug」プルダウンメニューで「DEVELOPER: 開発者のための特別Moodleデバッグメッセージ」を選択する。
  4. 「デバックメッセージを表示する debugdisplay」チェックボックスをチェックする。
  5. ページ下部の「変更を保存する」ボタンをクリックする。

また、以下のページがISSのエラーログの原因を探るヒントになるかと思います。

[IISのエラーログはどこにあるのか?エラーログの出力パス。 - puti se blog]
https://blog.putise.com/iisのエラーログはどこにあるのか?エラーログの/

[IISで500エラーが発生したので調査したときのメモ - Qiita]
https://qiita.com/toshihirock/items/f8d6a128faae163cfe37

[IIS 7以上でクラシックASPの詳細なエラーを表示する - きよくらの備忘録]
https://kiyokura.hateblo.jp/entry/20131001/p1

[IIS 4.0 または IIS 5.0 での "HTTP 500 - 内部サーバー エラー" エラー メッセージを Web サイト管理者がトラブルシューティングする方法 - Mcrosoftサポート]
https://support.microsoft.com/ja-jp/help/311766/how-web-site-administrators-can-troubleshoot-an-http-500-internal-serv

Mitsuhiro Yoshida への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿
対応ありがとうございます。
「DEVELOPER: 開発者のための特別Moodleデバッグメッセージ」をオンにしたら、以下のようになります。

尾恥ずかしながら、テスト用に作成したコースの画面を掲載します。この画面から、「+活動またはリソースを追加する」を押すと、「エラーが発生しました」の画面になり、22種の活動やリソース表示されなくなります。

コースの内容が表示された画面写真です


エラーが発生しましたと書かれた画面写真です

Mitsuhiro Yoshida への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿
IISの設定で、500エラーの詳細表示を選択したら、エラーページから以下のデータを取ることができました。エラーページとは、最初に投降した内部サーバーエラーページのことです。

Default exception handler: コーディングエラーが検出されました。プログラマによって修正される必要があります: Capability 'quizaccess/seb:manage_seb_showwificontrol' was not found! This has to be fixed in code. Debug: Error code: codingerror * line 824 of \mod\quiz\accessrule\seb\classes\settings_provider.php: coding_exception thrown * line 323 of \mod\quiz\accessrule\seb\classes\settings_provider.php: call to quizaccess_seb\settings_provider::can_manage_seb_config_setting() * line 356 of \mod\quiz\accessrule\seb\classes\settings_provider.php: call to quizaccess_seb\settings_provider::add_seb_config_elements() * line 89 of \mod\quiz\accessrule\seb\rule.php: call to quizaccess_seb\settings_provider::add_seb_settings_fields() * line 109 of \mod\quiz\accessmanager.php: call to quizaccess_seb::add_settings_form_fields() * line 295 of \mod\quiz\mod_form.php: call to quiz_access_manager::add_settings_form_fields() * line 214 of \lib\formslib.php: call to mod_quiz_mod_form->definition() * line 130 of \course\moodleform_mod.php: call to moodleform->__construct() * line 58 of \mod\quiz\mod_form.php: call to moodleform_mod->__construct() * line 141 of \course\modedit.php: call to mod_quiz_mod_form->__construct() 


Kazu K への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

恐らく、バージョンアップ時の不具合等の原因により、ケイパビリティ (mdl_capabilities) テーブルに以下のレコードが追加されていないようです。

id: 673 (自動採番)
name: quizaccess/seb:manage_seb_showwificontrol
captype: write
contextlevel: 70
component: quizaccess_seb
riskbitmask: 0

対応策としまして、以下のRenzo Uribeさんの投稿のように不足しているレコードを手動でケイパビリティ (mdl_capabilities) テーブルに追加するか、Moodleを最初からインストールしなおす必要があるかと思います。

[Moodle in English: Re: seb manage_seb_expressionsallowed not found]
https://moodle.org/mod/forum/discuss.php?d=410799#p1662422

添付 mdl_capabilities.png
Mitsuhiro Yoshida への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿

ありがとうございます。

phpMyAdmin を使って、レコードを登録してみました。といっても、あるべき数(完成形)がわからなかったので、最初からインストールし直すほうが早いという結論になりそうです。(Renzoさんのやり取りを追いましたが、完成形がわかりませんでした。)

mdl_capabilities は入力後で26件になりました。mdl_role_capabilities は現在30件で、何件追加するのかわかりませんでした(ので、再インストールになりそうです)

データベースの検索結果の画面です



Mitsuhiro Yoshida への返信

Re: 小テストの追加ができません(内部サーバーエラーとなる)

- Kazu K の投稿
最後の手段で、ダメ元で、Renzo さんの書き込みのあった最後の投稿(Argun Tさんの投稿)のとおりのレコードを追加してみました。
(再インストールのコストに比べると、試すコストはわずかなものですから、根拠の薄いダメ元でも、試す価値はあると考えたのです。)
すべて登録したところ、何事もなかったかのように、小テストが機能し始めました。

いろいろな情報を得ることができて、それぞれの投稿者に感謝します。

また、小テストで発生した不具合が、moodleのアップデート作業が契機かどうかは確証がないのですが、陥った状況が、ランダム的なものでなく、まったく同じレコードの欠落ということだったので、なにか規則性のある不具合かもと、感じました。

それならば、このスレッドが今後同じ症状になる方の助けになるかもしれません。