لماذا _POST أحيانا فارغة عندما يتم نشر جزء النص في PHP

StackOverflow https://stackoverflow.com/questions/229269

  •  04-07-2019
  •  | 
  •  

سؤال

وPHP 4.4 و PHP 5.2.3 تحت أباتشي 2.2.4 على أوبونتو.

وأنا على تشغيل نظام Moodle 1.5.3 وكان لها مؤخرا مشكلة عند تحديث دورة. المتغير $ _POST فارغ ولكن فقط إذا تم إدخال الكثير من النص في جزء النص في النموذج. إذا تم إدخال فقط نص قصير أنه يعمل بشكل جيد.

ولقد زاد من post_max_size من 8M إلى 200M وزيادة memory_limit إلى 256M ولكن هذا لم يساعد. لقد تضاعف LimitRequestFieldSize وLimitRequestLine إلى 16380 وتعيين LimitRequestBody 0 مع أي تحسن.

ولقد غوغليد عن إجابة ولكن لم يتمكنوا من العثور على واحد.

وHTTP الرؤوس على فايرفوكس يدل على حجم المحتوى من 3816 مع البيانات الصحيحة، لذلك لمجرد عدم الحصول على _POST $.

وهذا النظام كان يعمل بشكل جيد حتى قبل بضعة أسابيع. وكان التغيير الوحيد الذي / الخ / تستضيف لتصحيح قضية HELO مع خادم البريد الإلكتروني exim4.

ويمكنني تكرار المشكلة على الجهاز التطوير التي لديها exim4 لا يعمل لذلك اعتقد انه هو مجرد صدفة.

وشكرا لمساعدتكم.

هل كانت مفيدة؟

المحلول

ويمكن أن يكون ليس حجم ذات الصلة للآخر، ولكن كم من الوقت الخط قبل سطر جديد. إذا كانت تستخدم عرض موودل WYSIWYG أتش تي أم أل أن مجرد الحصول على وضعت في خط واحد مع عدم وجود فواصل. اذا ذهبت الى أتش تي أم أل وضرب العودة حول كل 1000 حرف يعمل؟

نصائح أخرى

وأنا لا أعرف ما يكفي لتوفير حقا إجابة مفيدة جدا وفيما يلي أكثر تخمين تعليما جيدا (على الأقل آمل ذلك).

أولا، يجب تصحيح الطلب بأكمله، إما عن طريق access_log أو على سبيل المثال من خلال الحرائق . (جيد أن يكون الحرائق على أي حال.) بالنسبة لي مشكلتك <م> يبدو مثل إعادة توجيه يحدث بينهما. أنا أعطيك مثالا:

وافترض هذا هو الهيكل الخاص:

/form.php
/directory/index.php

وهذا هو النموذج الخاص بك:

<form action="/directory" method="post">
...
</form>

والمشكلة في هذه الحالة هو، أنه على الرغم من /directory هو رابط صحيح، سوف أباتشي توجيه أنت واحد مزيد من الوقت ل/directory/، وبالتالي كنت فقدان حمولة الخاص بك (ما يفترض أن يكون في $_POST).

ما هو enctype النموذج؟ يمكن أن يكون ذلك أنه يحد من ammount البيانات ترسل من خلال النموذج.

وقد ترغب أيضا للتحقق من الخام البيانات الواردة $ _POST مع:

file_get_contents('php://input');

لتأكد لهم هو في الواقع إرسال البيانات. حصلت هذه الاقتراحات هنا .

وهذا يبدو وكأنه طائرة أباتشي أو اباتشي / PHP مشكلة التكامل. إذا $ _POST فارغة أنه يلمح إلى أن المتشعب الخادم لا تعطي المعلومات POST إلى PHP. إذا كنت أنت كنت التحقيق في تكوين Apache.

وهذا واضح، ولكن هل /etc/init.d/apache2 إعادة تشغيل؟

وبالإضافة إلى ذلك، يجب أن يظهر الملف error_log بعض المعلومات حول ما إذا كان حجم آخر تجاوز الحد الذي وضعته. النظر في زيادة الإسهاب الخاص لاستكشاف مشكلة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top