[Cözüldü]PHP max_post_size!

Başlatan noktafat, 17 Eylül 2011 - 16:33:07

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

noktafat

İyi günler arkadaşlar, PHP de Post işlemi yaparken çok uzun verileri postlamakta sıkıntı çekiyorum,uzun veriyi değişkene aktarabiliyorum fakat POST ladığım zaman karşıya boş gidiyor.(bir üniversitenin bütün sınıflarının, öğrencilerin notları ve devamsızlıklarının olduğu liste) php.ini içersindeki bütün ayarları denedim fakat sorunu çözemedim. (max_post_size, memory_limit, max_upload_size bunlar yeterince büyük değerlerde 20M üzerindeler veride toplam 5-6M değerinde) Aynı sistemi win üzerindeyken çalıştırabiliyordum. Şuan Debian 6, amd64 sürüm kullanmaktayım. Apache veya Debian (Linux) POST işlemleri üzerinde bir kısıtlama yapıyor mu?

susunx

post işlemi yaparken uzun sürüyormu ? time limit out ile alakalı olabilir diye düsünüyorum... veritabanı field yapısı ve source gonderirmisiniz

ayrıca php.ini ayarlarını söyle yapip denermisiniz:

upload_max_filesize:50M
max_execution_time:NONE
memory_limit:60M
post_max_size:55M
SMTP:localhost

canosayan

Error log a yqzılan herhangi bir mesaj var mı? Körlemesine gitmekten daha faydalı olur
Chmod bizim işimiz.

noktafat

Loglara herhangi bir kayıt düşmüyor. Cidden kafayı yedirtecek bir durum:/ susunx verdiğin değerleri değiştirdim ama değişen birşey yok.

susunx

post degerlerini db ye yazdırma.. sadece ekran cıktısını alıp denermisin. bildigim kadariyla mysql 40mb (phpmyadmin) kadar alıyor..
tırnaklar Sorun teskil edebilir. ! isaretide bu tür hataların olusmalarına yardımcı olur...  o kadar post verisi max_execution_time aşıyormu. ?

birde surayida incelemen yararına olur.
http://tr2.php.net/ini.core#ini.post-max-size
http://tr2.php.net/manual/tr/ini.core.php#ini.upload-max-filesize

noktafat

DB ye yazdırmıyorum şöyle açıklayayım yazdir($yazdirilacak,$baslik); gibi bir fonskiyon tanımladım, buda ekbilesen/yazdirma/yazdir.php ye post yapıyor. Fonskyion yazdir.php görünüm olarak siteden farklı olduğu için bu sayede istediğim şekilde ve formatta belge yazdırabiliyorum. mesela; ögrenci_listeleri.php üzerinde mysqlden verileri topluyorum ve $yazdirilacak değişkenine atıyorum. Hatta "echo $yazdirilacak;" diyerek olduğum sayfada tabloları gösterebiliyorum. Fakat fonksiyona verip gönderince (POST) boş gidiyor. Tablo çok karışık bütün sınıflarda öğrencilerin bütün notları, onların ortalamaları, devamsızlıkları vs. mesela notları göstermeyi çıkarınca yani sadece devamsızlıklar kalınca POST yapılıyor. max_execution_time  sorununu yaşamıştım daha önce onu 300 yapınca sorun kalmamıştı

canosayan

keşke bir miktar kod görsek...
Chmod bizim işimiz.

noktafat

Haklısın kusura bakma :)

function yazdir($yazdirilacak,$baslik){
$yazdirilacak=htmlspecialchars($yazdirilacak);
echo '<form method="POST" action="ekbilesen/yazdirma/yazdir.php" target="_blank">
<input type="hidden" name="yazdirilacak" value="'.$yazdirilacak.'">
<input type="hidden" name="baslik" value="'.$baslik.'">
<input type="image" src="resimler/yazdir.png" name="" value="Yazdır">
</form>';
}

ile verileri yazdir.php yi taşıyorum. O siteden bağımsız olduğu için istediğim gibi stil düzenlemesini yapabiliyorum. Mesela; ogrenci_listeleri.php gerekli listeleri not,devamsızlık vsyi alıp $yazdirilacak değişkenine atıyor. Burada sıkınyı yok çünkü değişkeni sayfaya yazdırdığımda (echo ile) herşey eksiksiz görünüyor. Sonra değişkeni fonksiyona sokuyorum ve kaynağı görüntülediğimde;

<form method="POST" action="ekbilesen/yazdirma/yazdir.php" target="_blank">
<input type="hidden" name="yazdirilacak" value="Burada veritabanından çektiğim bütün veriler (ilgili tablolar vs) eksiksiz var.">
<input type="hidden" name="baslik" value="">
<input type="image" src="resimler/yazdir.png" name="" value="Yazdır">
</form>

görünüyor. Image e basıp POST ladığımda ise malesef gitmiyor. Ama dediğim gibi kısaltınca verileri mesela notları tablodan çıkarınca POST işlemi yapılıyor. Sistemdeki bütün diğer yazdırma işlemleri ile çalışıyor.

canosayan

http://stackoverflow.com/questions/2364840/what-is-the-size-limit-of-a-post-request deki stackoverflow sayfasına göre bunun tarayıcı tarafındanda ayarlanabileceğine işaret edilmiş. mesela chrome otomatik olarak bazı xss gönderimlerini engeller.

peki diğer sayfada var_dump($_POST) deyin. yazdırılacak değişkeni ve başlık değişkeni için ne diyor.

Chmod bizim işimiz.

noktafat

array(3) { ["baslik"]=> string(0) "" ["x"]=> string(2) "22" ["y"]=> string(2) "14" }  çıktısını veriyor, diğer iki (x ve y) nin ne olduğu hakkında hiç bir fikrim yok ben postlamıyorum. "yazdirilacak" ise hiç postlanmamış gözüküyor.

daha küçük boyutlu bir veri postladığımda
array(4) { ["yazdirilacak"]=> string(20018) " ..... (öteki postlar) gibi bir çıktı veriyor. Yani sorun olmuyor.

canosayan

hım.
.htaccess dosyanıza şu iki satırı eklesek

SecFilterEngine Off
SecFilterScanPOST Off
Chmod bizim işimiz.

noktafat

Sonunda sorunumu çözdüm. Yardımcı olan emek harcayan bütün arkadaşlara çok teşekkür ederim. php5-suhosin diye bir modül yüklenmiş sisteme açıklaması ise şu: advanced protection module for php. sözde beni koruyormuş. snaptic ten kaldırıp apache serverı yeniden başlatınca düzeldi.