WordPressのメディア追加機能には、アップロードサイズの制限があります。
デフォルトの値だと、1つのファイルにつき最大2MBまでしかアップロード出来ません。
2MBというと、解像度の低い画像ファイルならともかく動画や少し大きなファイルはアップロード出来ないことになってしまいます。
例えば、WordPress上で記事を書きメディアファイルを記事内に挿入する場合、「メディア」として登録されていた方が挿入などの操作がWordPressの画面上からGUI上で容易に出来る上、WordPress上でメディアを視覚的に確認することが出来きる事からライブラリ管理の観点からもこの機能は有用です。
そのため、このアップロード制限の問題を解決しようと試みます。
このページでは上述したアップロード制限を2MB⇒2GBまで引き上げてみます。
確認環境
OS |
WindowsServer2008 R2 |
---|---|
Webソフト |
IIS7.5 |
DBソフト |
MySQL5.5 |
スクリプト |
PHP5.4 |
WordPress |
WordPress3.5.1 |
PHPの設定
・PHP.ini(修正対象は、IISのFastCGIの欄に表示されているディレクトリのiniファイルです。以下の方法で確認出来ます。
IISマネージャー起動⇒FastCGIの設定⇒PHPのパスを確認(例:C:\Program File\php\v5.4) )
php.iniで以下の項目を編集します。
memory_limit = 8M ⇒ 2020M PHPスクリプトが使用するメモリの上限
post_max_size = 8M ⇒ 2010M PHPスクリプトが使用出来るデータの最大サイズ
upload_max_filesize = 2M ⇒ 2000M アップロード可能なファイルの最大サイズ
上記の3項目は、memory_limit > post_max_size > upload_max_filesizeとなるように設定する
max_execution_time = 300⇒ 2100 スクリプトがサーバーにより強制終了されるまでに許容される最大時間(秒単位) 最大時間が経過したらタイムアウトで処理中断する
環境によってもっと時間がかかってしまう場合は適当な値に合わせて変更してください。
max_input_time = 300⇒ 2100 スクリプトが POST、GET そしてファイルアップロードなどの入力を受け付ける最大時間(秒単位) 最大時間が経過したらタイムアウトで処理中断する
環境によってもっと時間がかかってしまう場合は適当な値に合わせて変更してください。
pdo_mysql.cache_size = 2000→4000 mysqlで使用できるキャッシュの最大容量です。Mバイト単位でオーバーしてしまうと、一時ファイルが正しく作成できずアップロードが失敗してしまいます。
mysql.cache_size = 2000→4000 mysqlで使用できるキャッシュの最大容量です。Mバイト単位 オーバーしてしまうと、WordPress一時ファイルが正しく作成できずアップロードが失敗してしまいます。
upload_tmp_dir = ⇒(例:”C:\php\v5.4\upload”)一時ディレクトリを指定します。※環境変数が通っていない場合はパスを通します。
IISの設定
1.IISマネージャーを起動します。
2.該当のサイトをクリックします。
3.[要求のフィルタリング]をダブルクリックします。
4.右メニューから[機能設定の編集..]をクリックします。
⇒「要求フィルター設定の編集」が表示される
5.「許可されたコンテンツ最大長(バイト)」に必要なサイズを入力する
(最大サイズ:4,294,967,295バイト(4GB))
メディアファイルそのもののサイズだけでなく、アップロードの際に付加されるデータがあるので
少し大きめに設定する。
つまり、WIPS環境で4GBを超えるファイルをWordPressのメディアに登録することは、この制限があるため不可です。
6.Webサイトの直下のディレクトリにあるWeb.configを開く
<configuration>
<system.web>
<httpRuntime maxRequestLength=”2357198848″ />
</system.web>
</configuration>
を追加する。
既に存在している場合は、httpRuntime maxRequestLength=”xxxxxxxxx”の値を変更する
上の例では 2GB+余裕値(200MB) に変更しています。
7.%windir%\System32\inetsrv\config\applicationHost.configを開く
Vista以降のOSでは、システムファイルの編集にアクセス権が設定されていて、エディタで開こうとしても拒否されてしまう場合があります。
メモ帳を管理者権限で実行して(右クリックして「管理者として実行」を選択)エディタからファイルを開いて編集し上書き保存します。
ここでは以下の設定を変更します。
<configuration>
<configSections>
<sectionGroup name=”system.webServer”>
<sectionGroup name=”security”>
<section name=”requestFiltering” overrideModeDefault=”Deny” />
Deny → Allow に変更する。
8.Web.configに以下の設定を追加する。
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength=”2357198848″/>
</requestFiltering>
</security>
</system.webServer>
</configuration>
8.IIS全体を再起動する
WordPressの設定
WordPress管理画面から「ネットワーク管理者>設定>アップロード設定」
サイトのアップロード容量
チェックを入れて xxx MB とすると、1サイト当たりの「アップロードファイルの合計」容量を制限できる。外すと無制限。今回はチェックを外して無制限。
→設定は、各サイトのダッシュボードの「現在の状況」に「保存スペース」という表示欄に反映される。「xx%使用中」など出る。欄自体がなければこの設定がOFFになっているということ。
アップロードファイルの最大サイズ
上記設定のすぐ下。1つのファイルの最大容量を設定する。2301952KB (2GB+余裕値(200MB))と設定。(KB単位)
→設定は、各サイトの「メディア>新規追加」の「アップロードファイルの最大サイズ」に反映される。
WordPress管理画面からメディア画面を開いて、アップロード制限サイズが増えたか確認してみましょう。
トラブルシューティング
思った値に増えていない、またはアップロード中にエラーが発生する。
途中までアップロードが進むがファイルが消えてしまうなどの場合は以下を参照してください。
まずは、上述の「PHPの設定」「IISの設定」「WordPressの設定」を見直してみてください。
次に、以下を確認します。
1)サーバーの空き容量を確認する。
メディアファイルは最終的にWordPressのインストールされているディレクトリに格納されますが
アップロードを開始するとはじめに一時フォルダとしてphp.iniの で指定されたディレクトリに格納され
アップロードが完了してから移動されます。
そのため、この一時フォルダのドライブの容量がメディアファイルよりも小さい場合、アップロードに失敗します。
2)サーバーのアカウント権限を確認する。
IISが動作しているアカウントとIIS_USERに以下の権限があるか確認してください。
(対象フォルダ右クリック⇒プロパティ⇒セキュリティタブから確認出来ます。
IIS_USERがない場合は、ユーザーを追加してください。)
・PHPのインストールディレクトリの書き込み・読み込み権限
・WordPressのインストールディレクトリの書き込み・読み込み権限
・1)の一時フォルダの書き込み・読み込み権限