POST İçerik Uzunluğu sınırı aşıyor


95

Kullanıcılar dosyalarını yüklerken php'deki error_log dosyamda benzer hatalar alıyorum

PHP Uyarısı: POST Content-Length of 11933650 byte, Unknown on line 0'da 8388608 byte sınırını aşıyor

Php.ini'mde (public_html'de özel ini dosyası oluşturuldu) bu sorunu çözer mi, 1GB civarında ayarlamam ne kadar olur? Php.ini'de ayarlarımı buna değiştireceğim, sorunu çözecek mi?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

'Memory_limit' sınırını neye ayarlardım?

Ayrıca, yüklenen dosyanın boyutunun <1GB olup olmadığını kontrol etmek komut dosyamda doğru olur mu?

if($_FILES["uploadedfile"]["size"]<1000000)

5
Doğru php.ini dosyasını düzenlediğinizden emin misiniz?
Pekka

Doğru php.ini dosyasını düzenliyor musunuz (birkaç tane var)? Ayarları sıfırlayan başka bir şey mi var? (örneğin, herhangi bir çağrı var mı php_ini_set?)
Piskvor


@daza: php.ini'yi istediğiniz yere bırakamazsınız. HP yalnızca belirli konumları kontrol eder ve "mevcut dizin" onlardan biri değildir. Belirli bir dizinde ayarlamak için httpd.conf ve / veya bir .htaccess dosyanızda 'php_value' direktiflerini kullanabilirsiniz. Ancak aksi takdirde ana .ini dosyasında değiştirmeniz gerekir. Kullanım php_info()sizin "Yerel" ayarlarının ne görmek ve hangi .ini dosyaları kullanılmaktadır.
Marc B

1
<?php phpinfo(); ?>public_html'ye kopyalayarak bir info.php oluşturun ve tarayıcınızda çağırın. Sonra upload_max_filesize'ın doğru değere sahip olup olmadığını kontrol edin.
DanielB

Yanıtlar:


97

8388608 bayt, PHP'de varsayılan sınır olan 8M'dir. Php.ini'de yapılan bu değişiklikler gerçekten de sorunu çözecektir (Apache sunucunuzu yaptıktan sonra yeniden başlattığınızdan emin olun).

Hafıza sınırının burada değiştirilmesine gerek yoktur.


.İni dosyasında değişiklikleri yaptıktan sonra sunucunuzu yeniden başlattığınızdan emin olun.
Sandhu

Nginx + php fpm kullanıyorsanız php daemon'u yeniden sudo service php5-fpm restart
başlattığınızdan

Yeniden başlatma benim için yaptı. +1 Teşekkür;)
Refilon

1
Bana sadece deneyimimi burada yayınlamak edelim, yeniden başlatma bana verdi stop: Unknown instance:, sadece yeni bir php5-fpm örneğini yaratıyordu ama benim web sunucusu hala eskisini kullanıyordum, o zaman yapmak zorunda sudo killall -KILL php5-fpmardındansudo service php5-fpm start
Memler

Yüklemeyi gerçekleştiren PHP sürecinde başka neler yapıldığına bağlı olarak memory_limit, istenen maksimum yükleme boyutundan daha büyük bir miktara yükseltmek gerekebilir .
Craig Finch

45

Dosyada post_max_size8M'den 32M'ye geçmenizi öneririm php.ini.


39

sadece php.ini'yi ayarlıyorsun

sonra ayarlayın:

upload_max_filesize = 1000M;
post_max_size = 1000M;

sonra xampp'nizi yeniden başlatın .. Resmi kontrol edin


17

Bunu .htaccess'e yapıştırmayı deneyin ve işe yarayacaktır.

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 , upload_max_filesize'den biraz daha büyük olmalıdır , çünkü HTTP POST yöntemini kullanarak yüklerken metin ayrıca dosya boyutu ve adı vb. ile başlıklar içerir.

1GiB dosyalarını başarılı bir şekilde yüklemek istiyorsanız, şunları ayarlamanız gerekir:

upload_max_filesize = 1024M
post_max_size = 1025M

GB için doğru sonek G'dir, yani upload_max_filesize = 1G.

Memory_limit'i ayarlamaya gerek yok .


6

Bazı durumlarda, maksimum yürütme süresini artırmanız gerekir.

max_execution_time=30

ben yaptım

max_execution_time=600000

sonra mutlu oldum.


7
genellikle bunu php.ini içinde yapmak istemeyebilirsiniz çünkü bu TÜM php işlemlerinin o kadar süre çalışmasına izin verir. Set_time_limit () ile tek bir dosyada ayarlayabilirsiniz örneğin set_time_limit (600000)
billrichards

5

Birden fazla php.ini dosyası olabilir. Örneğin, WAMP kullanırken aşağıdaki dizinlerde 2 php.ini dosyası vardır:

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

İlkini düzenlemeniz gerekiyor.


4

Buna katılmıyorum, ancak php.ini veya .htaccess'teki dosya boyutunu artırmaya yönelik bu çözüm, kullanıcı sunucu uygulamasında izin verilenden daha büyük bir dosya gönderirse işe yaramayacaktır. Bunu ön uçta doğrulamanızı öneririm. Misal:

$(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
Neye katılmıyorsun?
Rob

1
İstemci tarafını doğrulamak sorun değil, ancak güvenlik için hiçbir şey yapmıyor, yalnızca kullanıcıya büyük bir dosya yüklüyorsa anında uyarı vermek için. Buradaki tüm amaç, kullanıcıların büyük bir dosya yüklemesini engellemek değil, büyük bir dosya yüklemelerine izin vermektir.
Altimus Prime

1
Bunun sunucu tarafı çözümü / kontrolü yok mu? Bir JS kontrolünü kolayca atlayabilirim.
akinuri

Nvm, anladı:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri

2

Wamp kullanarak Windows'ta Php 5.6.X sürümlerini kullanıyorsanız, dosya konumu şurada olabilir:

C:\Windows\php.ini

Sadece dene

post_max_size = 100M;

Apache 1'de değişiklik yapmayı deneyin. Bununla Wamp / XAMP yük .ini dosyanızı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.