Suhosin के साथ PHP SimpleXML, कोडइग्निटर और अपाचे

मेरे पास एक कोड है जिसे मैं कोडइग्निटर फ्रेमवर्क का उपयोग करके PHP5 में लिख रहा हूं। मैं इसे विंडोज़ (Xampp का उपयोग करके) और उबंटू (मानक अपाचे, PHP, MySQL स्टैक का उपयोग करके) पर चल रहा हूं।

मेरे पास एक फॉर्म है, जो एक्सएमएल लेता है, इसे पार्स करता है (सरल एक्सएमएल का उपयोग करके) और परिणामों को डेटाबेस में पोस्ट करता है।

विंडोज़ पर - कोई समस्या नहीं, इरादे के रूप में काम करता है।

लिनक्स पर - बड़ी समस्या। यह त्रुटियों से बाहर है।

मैंने एक्सएमएल को दो बार चेक किया है, और यह ठीक है।

मैंने एक्सएमएल की एक बड़ी राशि हटा दी, और ऐसा लगता है कि यह ठीक है।

मुझे लगता है कि यह फॉर्म से पोस्ट की जा रही एक्सएमएल स्ट्रिंग के आकार से संबंधित है, लेकिन मुझे यकीन नहीं है। फिर, विंडोज़ पर यह ठीक है - लिनक्स पर, यह त्रुटियों से बाहर है।

फॉर्म में पोस्ट किए गए डेटा का आकार ~ 160k है (हाँ, यह बहुत सारे पाठ है, लेकिन यह स्वचालित है - और अंत में यह लगभग 200k होगा)।

त्रुटि नीचे है।

किसी भी मदद की बहुत सराहना की।

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/ci/system/application/controllers/system.php:49 Stack trace: #0 /var/www/ci/system/application/controllers/system.php(49): SimpleXMLElement->__construct('') #1 [internal function]: System->add_system() #2 /var/www/ci/system/codeigniter/CodeIgniter.php(233): call_user_func_array(Array, Array) #3 /var/www/ci/index.php(115): require_once('/var/www/ci/sys...') #4 {main} thrown in /var/www/ci/system/application/controllers/system.php on line 49

लाइन 49 इस तरह दिखता है:

$xml = new SimpleXMLElement($this->input->post('form_systemXML'));

संपादित करें - तय करें

मुद्दा मिला। उबंटू पर सुहोसिन स्थापित है। फ़ाइल /etc/php5/apache2/conf.d/suhosin.ini में, मैंने लाइन suhosin.post.max_value_length = 65000 को सक्षम किया और मान को 195000 में बदल दिया। अपाचे को पुनरारंभ किया गया, और सभी अच्छे। पॉइंटर्स दोस्तों के लिए धन्यवाद।

0

3 उत्तर

अद्यतन - इसे syslog में मिला

4 नवंबर 21:53:32 ubu804 सुहोसिन [7 9 44]: ALERT - कॉन्फ़िगर किए गए अनुरोध चर मूल्य सीमा सीमा पार हो गई - गिराए गए चर 'form_systemXML' (हमलावर '127.0.0.1', फ़ाइल '/var/www/ci/index.php')

अब अपाचे कॉन्फ़िगरेशन को देख रहा हूं।

0
जोड़ा

कृपया लिनक्स बॉक्स पर अपनी PHP कॉन्फ़िगरेशन जांचें और इसकी तुलना अपनी विंडोज सेटिंग्स से करें। विशेष रूप से निम्नलिखित सेटिंग्स:

  • memory_limit
  • post_max_size
  • magic_quotes_gpc
  • max_input_time

शायद आप स्क्रिप्ट पर पोस्ट किए गए डेटा का डंप कर सकते हैं

print_r($_POST);

यह देखने के लिए कि वास्तव में सर्वर में कौन सा डेटा आ रहा है।

0
जोड़ा
memory_limit: linux 16m, विंडोज 32m post_max_size: linux 8m, windows 16m linux सेटिंग्स को बदल देगा और देखें कि क्या होता है।
जोड़ा लेखक Mark Unwin, स्रोत
डैन - अपडेट किया गया और अपाचे को पुनरारंभ किया गया (और phpinfo() के साथ डबल चेक किया गया) - कोई बदलाव नहीं। वही त्रुटि
जोड़ा लेखक Mark Unwin, स्रोत
Print_r ($ _ POST) जोड़ने का प्रयास किया, लेकिन जो कुछ भी वापस आया वह ऐरे ([सबमिट] => जमा करें) मौजूदा त्रुटि संदेश के साथ। "Form_systemXML" के लिए एक चर होना चाहिए। यकीन नहीं है ... शायद apache config?
जोड़ा लेखक Mark Unwin, स्रोत
मैंने एक्सएमएल इनपुट को 2870 लाइनों से 9 0 9 तक घटा दिया। ठीक काम किया। मुझे यकीन है कि यह आकार से संबंधित है ...
जोड़ा लेखक Mark Unwin, स्रोत

ऐसा लगता है कि आप Suhosin PHP एक्सटेंशन चला रहे हैं। कृपया कॉन्फ़िगरेशन प्रलेखन पर एक नज़र डालें: http: //www.hardened-php। शुद्ध/suhosin/configuration.html

The relevant option seems to be (I've never used the Suhosin extension): suhosin.post.max_value_length and/or suhosin.request.max_value_length

0
जोड़ा
धन्यवाद आदमी - यह पाया और सब अच्छा है।
जोड़ा लेखक Mark Unwin, स्रोत
करना होगा - अगर मेरे पास प्रतिष्ठा थी तो मैं कर सकता था ...
जोड़ा लेखक Mark Unwin, स्रोत