最大アップロードファイルサイズを変更する


513

アクセスできないPCでホストされているWebサイトがあります。私は人々が最大30MBのmp3ファイルをアップロードできるアップロードフォームを持っています。私のサーバー側のスクリプトはPHPで行われます。

ファイルをアップロードしようとするたびに、ファイルが許可されている最大サイズを超えているというエラーメッセージが表示されるため、サイズを増やす必要があります。Webでの私の調査では、.htaccessアクセス権のないファイルを変更するよう提案されたため、機能しません。他の人からは、カスタムphp.iniファイルをルートに追加する必要があるとの提案がありましたが、機能しませんでした。他の提案はありますか?

回答:


877

php.ini のupload_max_filesizeおよびpost_max_sizeに値を設定する必要があります。

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

php.iniファイルを変更した後、新しい設定を使用するにはHTTPサーバーを再起動する必要があります。

php.iniを変更できない場合は、運が悪いです。実行時にこれらの値を変更することはできません。php.iniで指定された値より大きいファイルのアップロードは、実行がへの呼び出しに到達するまでに失敗しますini_set

コアphp.iniディレクティブの説明を参照してください。


4
php.iniファイルが保存されているデフォルトのルートを知っていますか?
Yo Momma

1
Linuxでは、通常、/ etc / php /またはそれらの行にあるものにあります。共有サーバーを使用している場合、ホスティングプロバイダーがユーザーごとのphp.iniファイルを提供するのに十分な寛大さを持たない限り、運はありません。
ヨハネスゴーセット

4
WindowsでWAMPを使用している場合は、WAMPアイコン> PHP-> php.iniをクリックして編集できます。Debianでは、私の設定ファイルは/ etc / php5 / apache2にあります。
貧弱

19
より高いサイズを設定することをお勧めしますpost_max_size。投稿されたフィールドの全体的なサイズはファイルサイズよりも大きくなる可能性があるため、誰かが40MBのファイルをアップロードするという特別なケースが発生している場合、を超えpost_max_sizeたために失敗します。
acme 2013年

2
memory_limitもアップロードサイズを制限することに注意してください。
Daniel

151

.htaccessファイルを介して変更できます。

.htaccessファイルは、.phpファイルと同じディレクトリに保存されます。それらはそのフォルダーとすべてのサブフォルダーの構成を変更します。.htaccess選択したディレクトリにファイルを作成する(または、存在する場合はそれを変更する)ことによって、それらを使用するだけです。

次のコードを使用すると、アップロード制限を増やすことができます(サーバープロバイダーがを介したPHP構成の変更を許可している場合.htaccess)。

php_value upload_max_filesize 40M
php_value post_max_size 42M

3
いつもうまくいくとは限らないようです。私の開発マシンでは、.htaccessに適切な値を設定することでうまくいきました。ただし、共有ホスティングではこの設定は機能しませんが、エラーメッセージには、最大許容アップロードサイズが.htaccessで設定した値であることを示しています。したがって、非常に奇妙な状況が発生します。
Eugeniu Torica

5
これを.htaccessに追加すると、Apacheを実行している場合にのみ機能するようです。それを試してみて、私にとってはうまくいきます。
AngelGris 14

php.iniのこれらの2行がコメント解除されている場合、これは機能しません。ユーザー定義のphp.ini(.htaccess)ファイルの名前。デフォルトは ".user.ini" ;user_ini.filename = ".user.ini" です。この機能を無効にするには、このオプションを空の値に設定します;user_ini.filename =
Alan Deep

apache CGIまたはFast CGIを使用している場合、500エラーが発生することに注意してください。これを<IfModule mod_php7.c> </ IfModule>の内側にラップします
Shardj

59

同じ問題があり、.user.iniファイルを作成して、アップロードスクリプトが配置されていたディレクトリに配置しました。そのファイル内ではなく、これらの2つの値を設定します。

  upload_max_filesize = 40M

  post_max_size = 40M

そしてそれは私にとってはうまくいきました!


2
すごい。fastcgiを有効にしても動作します。PHP5.3以降が必要です。
Ciantic 2013

1
OK、これは他に何も機能しないときに共有サーバーで機能しました。素晴らしい発見。
Edward Potter

55

ini_set関数を使用することもできます(PHPバージョン5.3以下の場合のみ):

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

@acmeが言ったように、php 5.3以降では、この設定はPHP_INI_PERDIRディレクティブであるため、ini_setを使用して設定することはできません。代わりにuser.iniを使用できます。


38
最近のPHPバージョンでは、これらのini-settingsはPHP_INI_PERDIRのみであるため、スクリプトで設定することはできません。詳細はこちらをご覧ください。
acme 2013年

46

iniファイルを見つけるには、最初に実行します

php -i | grep -i "loaded configuration file"

次に、ファイルを開いて変更します

upload_max_filesize = 2M
post_max_size = 2M

2Mを必要なサイズ(たとえば100M)に置き換えます。

私はもう少し多くの情報でブログ記事を持っていますhttp://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini- file-for-wordpress


5
ファイルは次のように表示されます/etc/php5/cli/php.iniが、私の設定ファイルは/etc/php5/apache2/php.iniです。ある種の誤解を招く。
Fredrick Gauss

2つのphp.iniファイルがあります...そして、そのコマンドの答えにより、どちらを使用しているかがわかります!そのため、有効にするために変更を加える必要があります!
lewis4u 2017

40

私は過去に同じ問題を抱えています...そして私は.htaccessファイルを通してそれを修正しました

php設定を変更する.htaccess場合は、設定をIfModuleタグに配置する必要 があります。それ以外に、内部サーバーエラーが発生します。

これは例であり、私にとってはうまくいきます:

<IfModule mod_php5.c>
   php_value upload_max_filesize 40M
   php_value post_max_size 40M
</IfModule>

そして、あなたがもっと理解したいのであれば、これはphpリファレンスです。 http://php.net/manual/en/configuration.changes.php


5
オーバーライド機能がある場合。
アブソリュート

3
PHP.7をサポートするには、次のコードを使用して同じブロックを追加します。<IfModule mod_php7.c>
Mostafa

16

この問題.user.iniは、PHPファイルスクリプトが存在するディレクトリに呼び出されるファイルを作成することで解決しました(これは、このディレクトリ内のすべてのPHPスクリプトが新しいファイルサイズ制限を取得することを意味します)

の内容.user.iniは次のとおりです。

upload_max_filesize = 40M
post_max_size = 40M

2
これが私の解決策です。うまくいきます。codeignitorのようなフレームワークを使用している場合、「。user.ini」はindex.phpと同じ場所にある必要があります
The Dude

ありがとう。それは私にとってはうまくいきます。これは、php.iniにアクセスできない共有ホスティングに最適です。PHP 5.3以降で利用可能であることを追加します
yacsha

6

私も同じ問題を抱えていました。私は通常提案されている3つの方法を試しました:

  1. functions.php
  2. php.ini
  3. .htaccess

私の問題を解決した場合はありません。私はgodaddyを使用していて、提案された解決策を見つけました:

  1. なったWebホスティング、その後の管理
  2. 以下の下でソフトウェアを選択選択PHPのバージョンを
  3. テーブルの右上隅にある[ PHPオプションに切り替える]を選択します
  4. 一番下の部分では、おそらくupload_max_filesize = 2M
  5. 今、自由に変更してください
  6. 必ず[ 保存 ]ボタンをクリックしてください。
  7. 今すぐあなたのwp-adminのパネルに移動し、選択メディアは、その後追加

出来上がり!これで、最大アップロードファイルサイズが異なります。


6

共有ホスティングを使用したサイトでは、php.iniファイルの設定を変更できないことに何度も気づきました。また、.htaac​​cessファイルを作成することもできません。そのような状況では、次のことを試すことができます

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

6

答えは少し不完全です、あなたがしなければならない3つのこと

phpインストールのphp.iniにあります(注:CLI、apache、nginxのいずれを使用するかによって異なりますが、適切なphp.iniを見つけて操作してください。nginxの場合、通常/etc/php/7.1/fpm、7.1がバージョンによって異なる場所にあります。apacheの場合/etc/php/7.1/apache2

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

または他の値を設定します。Apacheがインストールされている場合はapacheを再起動/再読み込みします。nginxを使用する場合はnginxのphp-fpmを再起動します。


5

さて、ここに私の2セントを追加したいと思います。

私は共有ウェブホスティングを使用しており、この問題に何度も取り組み、自分で解決しようとしましたが、役に立ちませんでした。最後に、さまざまなWebソースを確認し、ホスティングサービスプロバイダーに連絡することで、なんとか解決しました。私の質問は、「どのように私はPHPの値を変更することができたmemory_limit共有ウェブホスティングでは?」、「どのように私はPHPの値を変更することができupload_max_filesize、共有ホスティングでは?」、「どのように私はPHPの値を変更することができmax_input_vars、共有ホスティングでは?」、「どのように私はPHPの値を変更することができますmax_execution_timeで共有ウェブホスティング?」、「max_input_time共有ウェブホスティングのphp値を変更するにはどうすればよいですか?」php.iniまたは.htaccessファイルを設定または変更することにより、さらに多くのことを行います。それらを変更しようとしたが、問題が発生した。最後に、ホスティングプロバイダーに連絡したところ、phpをネイティブに設定し、php 5.6に変更したことがわかりました。

「PHPは「ネイティブ」モードに設定されていたため、これらの値をオーバーライドできません。「5.6」に変更したので、そのままにしておいてください。」

その後、FTP Filezillaを介して自分のWebサイトに接続しました。また、FTPサービスで隠しファイルを表示することと、ローカルコンピューターで表示することを忘れないでください。.htaccessファイルはローカルラップトップと私のWebサイトで非表示になっているためです。これはpublic_htmlフォルダーにありました。ダウンロードしてファイルの最後に次のコードを追加し、サーバーにアップロードしました。

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 64M
php_value max_input_vars 1800
php_value max_execution_time 300
php_value max_input_time 300

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

当面はすべてが正常に機能しています。問題が解決した場合は、ここに書いて警告してください。上記のコードを変更できます。ちなみに、その変化を表す写真もいくつかアップロードしています。

共有WebホスティングサービスへのZipArchiveのインストールについて言及するのをほとんど忘れていたもう1つのことは、cpanelを介してphp設定に移動し、phpセレクター拡張をクリックしてzipセクションにチェックを入れることでチェックするという要件を満たしました。

ありがとう。

PS:私は良い慣行に心を開いています。ここで悪い慣行を見つけた場合は、私に知らせてください、私はそれらを変更しようとします。ありがとう。


4

おそらくこれは、@ seanb123と@Fredrick Gaussが彼のコメントにコメントするコメントになるはずですが、Drupal 8.1とPHP 7では、変更が必要なファイルは次の場所にありました。

/etc/php/7.0/apache2/php.ini

私はおそらく「ロードされた構成ファイル」(php -i | grep -i "loaded configuration file")と呼ばれるシステムとinfo.phpページにあるものを含む他の4つのphp.iniファイルを変更しましたが、どれも役に立ちませんでした。正しいパスを見つけるための鍵は2012年のサイトにありました。パス"/etc/php5/apache2/php.ini"はBACK THENでも非推奨であると彼らは言ったが、それは私にそれを見つける場所の手掛かりを与えた。PHP7の場合、PHP5とは少し異なりますが、概念は同じです。

たぶん、これは私のように他の方法では無力なシュマックを助けるでしょう。

そうは言っても、私の場合のOPに対する答えは、ボックスの管理者権限を持つ誰かがそれを行う必要があるということです。

私を助けてくれたサイト:http : //www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

これもここで対処されます:PHPMyAdminでのインポートファイルサイズの制限

編集:私自身への私のメモの全文:

最大アップロードサイズを変更するには、/ etc / php / 7.0 / apache2 / php.ini(または古いバージョン:/etc/php5/apache2/php.ini)のupload_max_filesizeおよび[必要な場合] post_max_sizeを編集します。

/etc/init.d/apache2 restart

再度編集:大きなファイルをインポートしているので、それらを処理するためにタイムアウトを変更する必要があるかもしれません。私の場合、 "config.default.php"という名前のファイルが見つかりました 。たとえば、大量のインポートを行うために/usr/share/phpmyadmin/libraries/config.default.php変数$cfg['ExecTimeLimit'] = 300;を900に変更しました。その後、Apacheを再起動する必要があります


3

これらの解決策のどれも私にはうまくいきません!! (すでにデフォルトで32Mに設定されています)問題はほとんどの場合max_allowed_packet

私はlocalhostで作業していて、を使用していMAMPます。

これが解決策です。

1.持っていない場合 my.ini

追加

--max_allowed_packet=168435456

...\MAMP\bin\startMysql.sh

2. my.iniがある場合

[mysqld]

追加

max_allowed_packet=100M

やった!


php.iniと.user.iniの両方にmax_allowed_pa​​cket = 128Mを追加しました。
Molasar

2

確認する必要がある3つのこと。

upload_max_filesizememory_limitおよびpost_max_sizephp.ini構成ファイルで正確に。

これら3つの設定はすべて、PHPが送信および処理できるデータの最大サイズを制限します。

通常post_max_sizememory_limitより大きい必要がありますupload_max_filesize


したがって、3つの変数の合計は、確実に確認する必要があります。


2

ではWAMP、それはすべての非常に簡単です

WAMP アイコン> PHP> PHP設定> upload_max_filesize = nM> n =(2M、4M、8M、16M、32M、64M、128M、256M、512M、または選択(カスタム))。

サービスは自動的に再読み込みされます。

あなたが本当に持っていない場合でも、一切のサーバへのアクセスを、あなたが書いて探検することがありますchunkingAPIを。


0

私にもこの問題があり、この設定を /etc/nginx/nginx.conf

client_max_body_size 0;

無制限の場合と同様に、0。

また、nginxでリバースプロキシを実行している場合は、そのサーバーにもこの設定が必要です(これにより、ここで私が失敗しました)。


0

正しいphp.iniファイルを編集し、ApacheまたはNginxを再起動しても動作しない場合は、php-fpmも再起動する必要があります。

sudo service php-fpm restart 

0

グローバルに変更することはややリスクが高いため、1つのスクリプトの 最大アップロード値を大きくしようとしましたbig_file_upload.php。どういうわけかini_set助けにはならなかった。いくつかの再調査の後、私はこれを思いつきました。それを入れてください.htaccess(名前がで変更されない限りAccessFileName

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.