アップロードファイルサイズの制限
moodle.orgでおそらく最もよく寄せられる質問は、「アップロードファイルサイズの上限を増やすにはどうすればよいですか?」というものです。必要な変更はMoodleのどのバージョンでも同じですが、OSによって変更する場所が異なります。アップロードファイルサイズはいくつかの方法で制限されており、次の一覧の各項目は、それより後の項目を制限します。
- サーバレベル
- Moodleサイトレベル
- コースレベル
- 活動レベル
これは議論の分かれる問題です。主な理由は、Moodle内で設定するものだと思われがちなためです。残念ながらそうではありません。これらはサーバおよびPHPのフォルダで設定する必要がある環境の問題であり、Moodleは自身の外側では動作できません。
サーバへの物理的なアクセス
以下の手順は、サーバへの完全な物理的アクセスおよび管理者アクセス権があることを前提としています。ホスティングサーバを使用している場合は、おそらく別の方法でファイルアップロードサイズを増やす必要があります。
以下の2つの方法には、それぞれ長所と短所があります。php.iniファイルを変更すると、その変更はサーバ上のすべてのPHPアプリケーションに影響します。PHP5以降、サーバ上に置けるphp.iniファイルは1つだけです。ただし、php.iniの方法はすべてのウェブサーバで機能します。.htaccessの方法は、それを配置したフォルダおよびそのすべてのサブフォルダにのみ影響しますが、Apacheで特定の設定を有効にしておく必要があります。
ファイルサイズの制限 - その仕組み
ホスティング業者は、サーバ環境でアップロードファイルの最大サイズに上限を設定している場合があり、ホスティング業者が許可していれば、その上限をオーバーライドできます。PHPには、アップロード時に扱うファイルのサイズを制限するための設定があります。ホスティング業者は、自社の考えや顧客のニーズに基づいて、php.iniでその値を設定しています。このサイズは、Moodleのサイト管理 > セキュリティ > サイトセキュリティ設定 > 最大アップロードファイルサイズドロップダウンコンボボックスに表示されます。この値は、サイトのニーズに合わせていつでも変更できます。コース設定ページでも、さらに制限を加えることができます。コース設定がサイト設定をオーバーライドすることは決してなく、サイト設定がphp.iniの設定をオーバーライドすることもなく、php.iniの設定がサーバ設定をオーバーライドすることもありません。この規則の唯一の例外は、サーバとPHPの両方の設定を操作できる場合です。その方法は以下で説明します。
php.iniファイルの変更
以下の手順では、php.iniファイルを編集してファイルアップロードサイズを変更する方法を説明します。
これらの手順は、ほぼ次のように要約できます。 /etc/php5/apache2/php.iniファイルで、使い慣れたエディタを使用して、「post_max_size」、「upload_max_filesize」および「max_execution_time」を必要に応じた値に変更する必要があります。
以下は、さまざまなMoodleのインストール環境向けの、1行ずつ実行する手順です。
Ubuntu Linuxの手順
以下の手順は、標準のMoodleパッケージ、PHP 5およびApache 2をapt-getでインストールし、すべてデフォルトのインストールのままにしていることを前提としています。自分でコンパイルした場合は、php.iniファイルの場所はわかっているものと思います! 注:PHPの最新バージョンは現在7.2以降であるため、ファイルを探す必要がある場合があります。phpinfo()を実行すると正しい場所がわかります。その場所は次のようなものになります:/etc/php/7.3/apache2/php.ini
/etc/php5/apache2/にあるphp.iniファイルの次の3つの設定を編集する必要があります。 以下は、1行ずつ実行する手順です。
- 「sudo nano /etc/php5/apache2/php.ini」と入力します。
- CtrlとWを押して、「post_max_size」と入力します。
- 値を、サイトでアップロードとして受け付けたいMb数に変更します。
- CtrlとWを押して、「upload_max_filesize」と入力します。
- 値を、サイトでアップロードとして受け付けたいMb数に変更します。
- CtrlとWを押して、「max_execution_time」と入力します。
- 値を600に変更します。
- CtrlとOを押します。
- CtrlとXを押します。
- sudo apachectl restartと入力します。
NGINXのシステム管理者は、nginxのメイン設定ファイルの「http」セクションに「client_max_body_size XXXm;」も追加する必要があります(詳細情報)。SSLを使用している場合は、SSLのserverおよびlocationにも上記を設定する必要があります。
新しいファイルサイズの上限が、管理 > セキュリティ > サイトポリシー > 最大アップロードファイルサイズに表示されるはずです。
Mac上のXAMPPの手順
以下は、提供されているXAMPPサンプルダウンロードパッケージを使用して、Mac上のMoodleでこの作業を行う手順です(OS Xの本番サーバ向けではありません)。
- XAMPP ControlアプリでApacheおよびMySQLを実行している場合はそれらを停止し、XAMPP Controlアプリを終了します。
- Finderを開き、「アプリケーション」に移動します。
- 下に移動して、XAMPP / xamppfiles / etcフォルダを開きます。
- php.iniファイルをテキストエディット(または他のプレインテキストエディタ)で開きます。
- post_max_size設定を探し、値を128M(デフォルト)からさらに大きな値に増やします。最大は500Mです。
- upload_max_filesizeについても同じようにします(数値は同じにします)。
- max_execution_time設定を探し、値を300(アップロードでタイムアウトが発生する場合はそれ以上)に増やします。
- php.iniファイルを保存します。
- 通常どおりApacheおよびMySQLを再起動します。
注:Macに管理者権限でログインしていない場合、php.iniファイルの保存時に「permission denied」エラーが発生することがあります。この問題を回避するには、php.iniファイルがある/etcディレクトリを一時的に書き込み可能に設定します。その方法については、こちらまたはこちらをご覧ください。
Windows XPおよびServer 2003の手順
以下の手順は、最新のPHP 5.3.x Windows用zipパッケージをダウンロードしてC:\PHPに展開していることを前提としています。PHPを別の場所にインストールした場合は、「C:\PHP」へのすべての参照を、PHPをインストールした場所に置き換えてください。
|
UTF-8形式でファイルを保存できるテキストエディタ(Crimson EditorやNotePad++など)をダウンロードしてインストールし、ワードパッドやメモ帳ではなくそちらを使用してください!問題は、ワードパッドやメモ帳では、PHPの要件に適合しない可能性のある隠し文字が含まれてしまうことです。 |
- C:\PHPを開きます。
- このフォルダにあるphp.iniファイルを右クリックし、「プログラムから開く」を選択して、使用するエディタを選びます。
- Ctrl + Fを押して、「post_max_size」と入力します(必要に応じて「検索」をクリックします)。
- 値を、サイトでアップロードとして受け付けたいMb数に変更します。
- Ctrl + Fを押して、「upload_max_filesize」と入力します(必要に応じて「検索」をクリックします)。
- 値を、サイトでアップロードとして受け付けたいMb数に変更します。
- Ctrl + Fを押して、「max_execution_time」と入力します(必要に応じて「検索」をクリックします)。
- 値を600に変更します。
- CtrlとSを押すか、保存ボタンをクリックします。
- エディタを終了します。
- ウェブサーバを再起動して、変更を反映したPHPを再読み込みします。
- IISの場合
- サーバの「スタート」メニューを開き、「ファイル名を指定して実行」を選択します。
- 「iisreset /RESTART」と入力します。
- Apache 2およびWindows XPの場合
- スタート > すべてのプログラム > Apache > Restartに移動します。
- Apache 2およびWindows Serverの場合
- 次のコマンドは、Windows ServerにApache 2をサービスとしてインストールしている場合に機能します。
- サーバの「スタート」メニューを開き、「ファイル名を指定して実行」を選択します。
- 「httpd -k restart」と入力します。
新しいファイルサイズの上限が、管理 > セキュリティ > サイトポリシー > 最大アップロードファイルサイズに表示されるはずです。
注:この手順は、XamppのWindows用インストーラにも適用されます。C:\PHPをC:\Moodle\server\phpに置き換え、Moodleを通常の停止・起動で再起動するだけです。
Apache設定ファイルの変更
Ubuntu Linuxの手順
moodleディレクトリのconfig.phpファイルも編集する必要がある場合があります。
- 「gksudo nautilus」と入力して、root権限を取得します。
- /etc/moodleに移動します。
- apache.confを開きます。
- 「<IfModule mod_php5.c>」セクションに移動します。
- 「php_value upload_max_filesize = 2M」をより大きな値に変更します。
- 「php_value post_max_size = 2M」をより大きな値に変更します。
- 「<IfModule mod_php4.c>」セクションに移動します。
- 「php_value upload_max_filesize = 2M」をより大きな値に変更します。
- 「php_value post_max_size = 2M」をより大きな値に変更します。
- ファイルを保存します。
- sudo /etc/init.d/apache2 restartと入力します。
.htaccessファイルの変更
以下の手順はApacheウェブサーバでのみ機能し、さらにApacheサーバでオーバーライドが許可されている必要があります。従来、.htaccessファイルを使用できるのはPHPがApacheのモジュールとして実行されている場合だけでしたが、Apache 2.2では、もはやそうではないようです。現在は、モジュール形式とCGI形式のどちらでも.htaccessファイルを使用できます。また、.htaccessファイルの使用を許可するとサーバのパフォーマンスが低下し、これも望ましい結果ではありません。そのため、ホスティング業者に確認してください。
.htaccessファイルは分散設定ファイルです。つまり、フォルダ単位で使用して、各ユーザのフォルダおよびサブフォルダを設定できます。Apache設定ファイルの「AllowOverrides」ディレクティブを.htaccessファイルで変更することはできず、これを手動で設定できるのはホスティング業者だけです。通常、ホスティング業者がサーバ設定のオーバーライドを許可している場合は、サイトのルートに.htaccessファイルが配置されています。このファイルを以下と同じように編集すると、設定したオーバーライドが機能します。または、テキストエディタで独自の.htaccessファイルを作成することもできます。このファイルは、.configのように別の名前の場合もあります。「.」で始まるファイルがある場合は、好奇心からでも、テキストエディタで開いてみるとよいでしょう。
Moodleのメインディレクトリ('moodledata'ディレクトリではなく、'index.php'がある場所)に、次の内容を含む.htaccessという名前のファイルを作成します。
php_value upload_max_filesize 20971520 php_value post_max_size 20971520 php_value max_execution_time 600
20971520は20Mbの整数値です。次のサイトを使用して、メガバイトをバイトに変換できます。
.htacessファイルの編集方法の詳細な説明については、Apache Tutorial: .htaccess filesのページをご覧ください。
IIS 7.0/7.5の設定の変更(Windows Server 2008、Windows Server 2008 R2)
まず、アクティビティおよび要求のタイムアウトを増やします(低速な接続でも大きなファイルのアップロードが成功するようになります)。
FastCGI 設定 > 編集(PHPアプリケーションを右クリック) プロセス モデル > アクティビティ タイムアウトを'3600'(1時間)に設定 プロセス モデル > 要求タイムアウトを'3600'(1時間)に設定
次に、「許可されたコンテンツの最大長」を設定します。
要求フィルター > 機能設定の編集: 「許可されたコンテンツの最大長」を目的のファイルサイズ(バイト単位)に設定(例:512MBの場合は'536870912'。デフォルトは約28.6MB)
ホスティングサーバ
ホスティングサーバでは、アップロードおよびダウンロードのファイルサイズについて、状況が少し異なる場合があります。おそらく、.htaccessファイルを作成または変更するか、php.iniファイルを変更するよう指示されるでしょう。
|
何かを試す前に、サービスプロバイダに相談するとよいでしょう。おそらく「方法」についての手順が用意されており、アップロードファイルサイズについて独自の上限が設けられている場合もあります。ファイルサイズをギガバイト単位で測るホスティング業者もあれば、メガバイト単位で測るホスティング業者もあります。上限に不満がある場合は、契約内容を確認し、希望に合う上限と価格のプロバイダへの変更を検討してください。 |
ホスティングサーバでの.htaccess
.htaccessファイルの目的は、サーバとphp.iniファイルの両方の現在の制限をオーバーライドすることです。Moodle内のどこにそのファイルを配置する必要があるかはホスティングサーバ側から案内されるはずですが、通常はルートに配置すれば十分です。すでに使用できる標準のファイルが用意されている場合もあり、その場合はそれを使用してください。ただし、用意されていない場合もあります。
.htaccessファイルに次の行を追加します。
php_value upload_max_filesize 128M php_value post_max_size 128M
これにより、アップロードは128MBに制限されますが、プロバイダと合意した任意のサイズにできます。記述は、サーバの要件に応じて多少異なる場合があります。
ホスティングサーバでのphp.ini
サーバによっては、moodleのルートの.htaccessファイルを変更できず、PHPディレクティブにはphp.iniファイルを使用するよう指示される場合があります。その場合は、上記のphp.iniファイルの変更セクションの手順を使用できます。
ホスティングサーバ上のmoodleサブフォルダにあるphp.iniファイルを探します。念のため、ファイルをバックアップとしてコピーしておくとよいでしょう。php.iniを編集し、コード内で「upload_max_filesize」およびpost_max_sizeを探します。「=」の後の数値を変更します。ここでは、最大ファイルサイズは20メガバイトです。
upload_max_filesize = 20M post_max_size = 20M
|
それでも変更されませんか?cpanelを使用している一部のホスティング業者では、services/softwareの下にPHP設定プログラムがあります。「Single php.ini」オプションを使用し、変更するphp.iniファイルの場所を必ず控えておいてください。これにより、同じ領域の.htaccessファイルが変更され、PHPを使用するすべてのプログラムに対するサーバの上限も変更されます。 |
|
それでも変更されませんか?NGINXのシステム管理者は、nginxのメイン設定ファイルの「http」セクションにclient_max_body_size XXXm;も追加する必要があります(詳細情報)。SSLを使用している場合は、SSLのserverおよびlocationにも上記を設定する必要があります。 |
関連項目
- 管理FAQのドキュメントページ
- サイトポリシーのドキュメントページ
- Using Moodleフォーラムのディスカッション「アップロードファイルの最大許容サイズを増やすための詳しい手順」
- Using Moodleフォーラムのディスカッション「ホスティングサーバで最大許容サイズを増やすための手順」
- Using Moodleフォーラムのディスカッション「apt-get経由でMoodleをインストールする際の最大アップロードサイズの変更に関するヘルプ」
