Sunulan HTML formu girişleri eksik PHP $ _file dizi

5 Cevap php

Basically when I have more than about 25 file uploads in one form, the PHP $_FILES array is cropped to the first 25 entries (0-24), which is incorrect. It should have all 31. This only happens on one particular server. Apache with PHP. I’ve tried it on two other servers and they seem to allow all 31.

Bu Apache bazı yapılandırma seçeneği neden olabilir? Ya da daha büyük olasılıkla PHP bir yapılandırma sorunu nedir?

Aklıma tek şey belki LimitRequestFields apache direktifi olduğunu, ancak bu bir hata atmak yerine sadece ilk 25 kırpmak gerekir. Doğru?

Ancak bu nedeni bu özel sayfa için gerekli işlevselliği için bir zorunluluktur, bir form pek çok dosya alanları sahip kötü bir uygulama olduğunu biliyoruz. Bu geçici bir çözüm olamaz.

Bu sorunla ilgili herhangi bir yardım büyük mutluluk duyacağız.

Aşağıdaki HTML yaşıyorum sorunu gösterir.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form enctype="multipart/form-data" action="test.php" method="post">
<input type="file" name="field_id_11[0][1]"/>
<input type="file" name="field_id_11[1][1]"/>
<input type="file" name="field_id_11[2][1]"/>
<input type="file" name="field_id_11[3][1]"/>
<input type="file" name="field_id_11[4][1]"/>
<input type="file" name="field_id_11[5][1]"/>

<input type="file" name="field_id_11[6][1]"/>
<input type="file" name="field_id_11[7][1]"/>
<input type="file" name="field_id_11[8][1]"/>
<input type="file" name="field_id_11[9][1]"/>
<input type="file" name="field_id_11[10][1]"/>
<input type="file" name="field_id_11[11][1]"/>
<input type="file" name="field_id_11[12][1]"/>
<input type="file" name="field_id_11[13][1]"/>
<input type="file" name="field_id_11[14][1]"/>
<input type="file" name="field_id_11[15][1]"/>
<input type="file" name="field_id_11[16][1]"/>
<input type="file" name="field_id_11[17][1]"/>
<input type="file" name="field_id_11[18][1]"/>
<input type="file" name="field_id_11[19][1]"/>
<input type="file" name="field_id_11[20][1]"/>
<input type="file" name="field_id_11[21][1]"/>
<input type="file" name="field_id_11[22][1]"/>

<input type="file" name="field_id_11[23][1]"/>
<input type="file" name="field_id_11[24][1]"/>
<input type="file" name="field_id_11[25][1]"/>
<input type="file" name="field_id_11[26][1]"/>
<input type="file" name="field_id_11[27][1]"/>
<input type="file" name="field_id_11[28][1]"/>
<input type="file" name="field_id_11[29][1]"/>
<input type="file" name="field_id_11[30][1]"/>
<input type="text" name="blah" value="something"/>
<input type="submit" />
</form>

</body>
</html>

5 Cevap

Yani "25 max files" ve "happens only on a specific server" bu sunucu üzerinde bazı yapılandırma / güvenlik önlemleri işaret gibi görünüyor.

Bakın suhosin.upload.max_uploads yapılandırma yönergesi - Ve "25 max uploads" suhosin PHP extension varsayılan yapılandırma.


That extension is installed by default (for security reasons) on some Linux distributions -- Ubuntu provides it by default, for example, if I remember correctly ; you can check if it's installed/enabled in the output of phpinfo().

ini file directives in Dosya Yükleme bölümüne göz atın.

Eğer yukarıdaki bu sürümünü kullanıyorsanız veya ayarlama içine bakmak isteyebilirsiniz PHP 5.2.12 beri mevcut bir max_file_uploads limit ayarı vardır.

Yanı sıra, upload_max_filesize kombine tüm yüklenen dosyalar için total maksimum, yani açıklamadan daha olası geliyor olsa da, orada bir sınırı vurmak olabilir mümkün olduğunu bir { [(2)]} sınırlayıcı bir sorundur.

PHP geçici bir dizine yüklenen dosyaları koyar. Sorun fazladan 6 dosya bu geçici dizinde olup olmadığını görmek için kontrol ederek PHP veya Apache ile yani eğer teyit edebilirsiniz.

Ne yapardın ilk dosyanın konumunu almak ve o dizindeki tüm dosyaları echo için bir döngü çalıştırılır. O 31 ise, o 25 ise, bu Apache var, PHP bulunuyor.

Suhosin yapılandırma ayarlarına bakarak işe yaramazsa. upload_max_filesize ve php.ini içinde post_max_size seçeneklerini kontrol etmeyi deneyin.

LimitRequest* direktifleri de bakabilirsiniz:

http://httpd.apache.org/docs/2.2/en/mod/core.html#limitrequestbody