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)

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.


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.


39

Anda hanya mengatur di php.ini

lalu setel:

upload_max_filesize = 1000M;
post_max_size = 1000M;

kemudian restart xampp Anda .. Periksa gambarnya


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

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 .


6

Dalam beberapa kasus, Anda perlu menambah waktu eksekusi maksimum.

max_execution_time=30

saya berhasil

max_execution_time=600000

lalu saya bahagia.


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.


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('');
        }
    });
});


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.