問題の背景
Moodle 2.0以降、ファイルは従来の方法でサーバーに保存されなくなりました/this/is/the/path/to/my.file。代わりに、ファイルは再ハッシュされ、リポジトリに保存されます (つまりmoodledata、一見ランダムなデータのコレクションとしてフォルダ全体に分散されます)。これにより、セキュリティと OS 間の互換性が向上しますが、FTP 経由で SCORM zip パッケージを単純にアップロードしたい人にとっては複雑になります。Moodle 2.0 でのファイル処理に関する詳細情報は次のとおりです。
ソリューションへのパス
更新したいファイルを見つけて更新しましょう。
- phpmyadmin を実行し、
mdl_filesテーブルに移動し、filenameフィールドで名前でファイルを見つけます (それが であるとしましょうportrait.jpg)
contenthashフィールドを見てくださいabcde1234567890。これは、ファイルがmoodledata/filedir/ab/cd/という名前のフォルダーに保存されていることを意味しますabcde1234567890。
- 更新されたファイルの名前を に変更
portrait.jpgしabcde1234567890、アップロードして上書きします。
- phpmyadmin に戻り
filesize、レコードのフィールドをportrait.jpg更新されたファイルのサイズで更新します。
明らかに、このプロセスは自動化できます。ファイルをアップロードできるようにするスクリプトを作成する必要があります。その後、mdl_files でそのファイルを検索し、正しいフォルダーに保存して、それに応じてすべてのフィールドを更新します。
別のアイデア
外部パッケージ タイプを有効にします (また、「起動ごとに更新」も有効にします)。サイト管理 / プラグイン / アクティビティ / SCORM に移動し、下のボックスにチェックを入れます。これで、SCORM パッケージを別のサーバーから直接起動できるようになるため、Moodle がそれを台無しにすることはありません。もちろん、他の (おそらくクロスドメイン関連の) 問題で実行することもできます。