Panjang Konten POST melebihi batas

94

Saya mendapatkan kesalahan serupa di error_log saya di php ketika pengguna mengunggah file mereka

Peringatan PHP: Panjang Konten POST 11933650 byte melebihi batas 8388608 byte pada Tidak Diketahui pada baris 0

Di php.ini saya (membuat file ini khusus di public_html) apakah ini akan menyelesaikan masalah ini, berapa banyak saya harus mengaturnya menjadi sekitar 1GB? Saya akan mengubah pengaturan saya menjadi ini di php.ini, apakah itu akan menyelesaikan masalah?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

Untuk apa saya akan menyetel batas 'memory_limit'.

Juga apakah ini benar dalam skrip saya untuk memeriksa ukuran file yang diunggah <1GB

if($_FILES["uploadedfile"]["size"]<1000000)
daza166
sumber
5
Apakah Anda yakin Anda mengedit php.ini yang benar?
Pekka
Apakah Anda mengedit php.ini yang benar (ada beberapa)? Apakah ada hal lain yang mengatur ulang pengaturan? (misalnya ada panggilan ke php_ini_set?)
Piskvor meninggalkan gedung
Saya membuat file php.ini kustom di public_html
daza166
@daza: Anda tidak bisa meletakkan php.ini dimanapun Anda inginkan. PHP hanya memeriksa lokasi tertentu, dan "direktori saat ini" bukan salah satunya. Anda dapat menggunakan arahan 'php_value' di httpd.conf dan / atau file .htaccess untuk disetel di direktori tertentu. Tetapi jika tidak, Anda harus mengubahnya di file .ini utama. Gunakan php_info()untuk melihat apa setelan "lokal" Anda, dan file .ini mana yang digunakan.
Marc B
1
buat info.php dengan <?php phpinfo(); ?>menyalinnya ke public_html dan beri nama di browser Anda. Kemudian periksa apakah upload_max_filesize memiliki nilai yang benar.
DanielB

Jawaban:

96

8388608 byte adalah 8M, batas default dalam PHP. Perubahan pada php.ini tersebut seharusnya menyelesaikan masalah (pastikan Anda me-restart server Apache Anda setelah membuatnya).

Batas memori tidak perlu diubah di sini.

ceejayoz
sumber
Pastikan Anda memulai ulang server setelah melakukan perubahan pada file .ini.
Sandhu
Jika Anda menggunakan nginx + php fpm pastikan untuk me-restart daemon php sudo service php5-fpm restart
Gourneau
Restart melakukannya untuk saya. +1 Terima kasih;)
Refilon
1
Mari saya hanya posting di sini pengalaman saya, restart memberi saya stop: Unknown instance:, itu hanya membuat contoh php5-fpm baru tapi webserver saya masih menggunakan yang lama, saya kemudian harus melakukan sudo killall -KILL php5-fpmitusudo service php5-fpm start
Memes
Bergantung pada apa lagi yang sedang dilakukan dalam proses PHP yang menangani unggahan, mungkin perlu untuk meningkatkan memory_limitjumlah yang lebih besar dari ukuran unggahan maksimal yang diinginkan.
Craig Finch
45

Saya menyarankan Anda untuk mengubah post_max_sizedari 8M menjadi 32M di php.inifile.

manson
sumber
39

Anda hanya mengatur di php.ini

lalu setel:

upload_max_filesize = 1000M;
post_max_size = 1000M;

kemudian restart xampp Anda .. Periksa gambarnya

Farid Blaster
sumber
17

Coba tempel ini ke .htaccess dan seharusnya berfungsi.

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M
Mel
sumber
10

post_max_size harus sedikit lebih besar dari upload_max_filesize , karena saat mengupload menggunakan metode HTTP POST, teks juga menyertakan header dengan ukuran dan nama file, dll.

Jika Anda ingin berhasil mengupload file 1GiB, Anda harus mengatur:

upload_max_filesize = 1024M
post_max_size = 1025M

Perhatikan, sufiks yang benar untuk GB adalah G, yaitu upload_max_filesize = 1G.

Tidak perlu menyetel memory_limit .

ArticIceJuice
sumber
6

Dalam beberapa kasus, Anda perlu menambah waktu eksekusi maksimum.

max_execution_time=30

saya berhasil

max_execution_time=600000

lalu saya bahagia.

Penjual keliling
sumber
7
sering kali Anda mungkin tidak ingin melakukan ini di php.ini karena ini akan memungkinkan SEMUA proses php untuk berjalan selama waktu tersebut. Anda dapat mengaturnya dalam satu file dengan set_time_limit () misalnya set_time_limit (600000)
billrichards
5

Mungkin ada lebih dari satu file php.ini . Misalnya saat menggunakan WAMP ada 2 file php.ini di direktori berikut:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

Anda perlu mengedit yang pertama.

Irfandi D. Vendy
sumber
4

Saya tidak setuju, tetapi solusi untuk meningkatkan ukuran file di php.ini atau .htaccess ini, tidak akan berfungsi jika pengguna mengirim file lebih besar dari yang diizinkan di aplikasi server. Saya sarankan untuk memvalidasi ini di frontend. Contoh:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});

Marcio Muzzi
sumber
2
Tidak setuju dengan apa?
Rob
1
Tidak masalah untuk memvalidasi sisi klien, tetapi tidak melakukan apa pun untuk keamanan, hanya untuk memberikan peringatan langsung kepada pengguna jika mereka mengunggah file besar. Seluruh tujuan di sini bukan untuk mencegah pengguna mengupload file besar, tetapi untuk memungkinkan mereka mengupload file besar.
Altimus Prime
1
Apakah tidak ada solusi sisi server / periksa ini? Saya dapat dengan mudah melewati pemeriksaan JS.
akinuri
Nvm, menemukannya:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri
2

Jika Anda menggunakan versi Php 5.6.X di windows menggunakan Wamp, maka lokasi file mungkin di,

C:\Windows\php.ini

Coba saja

post_max_size = 100M;

Coba lakukan perubahan di Apache one. Dengan itu Wamp / XAMP Anda memuat file .ini

Satyanarayana
sumber