我有我在PHP5寫,使用CodeIgniter的框架的應用程序。我有它在Windows(使用Xampp)和Ubuntu(使用標準的Apache,PHP,MySQL堆棧)上運行。PHP的SimpleXML,笨和Apache時使用了Suhosin
我有一個表單,需要XML,解析它(使用simpleXML)並將結果發佈到數據庫中。
在Windows上 - 沒有問題,按預期工作。
在Linux上 - 大問題。它出錯了。
我有雙重檢查的XML,它的罰款。
我刪除了大量的XML,而且它似乎是確定。
我認爲這與從表單發佈的XML字符串的大小有關,但我不確定。再次,在Windows上,它是可以的 - 在Linux上,它出錯了。
發佈在表單中的數據大小約爲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'));
編輯 - 固定
發現的問題。 Suhosin安裝在Ubuntu上。在文件/etc/php5/apache2/conf.d/suhosin.ini中,我啓用了行suhosin.post.max_value_length = 65000
並將值更改爲195000.重新啓動的Apache,並且都很好。感謝指針傢伙。
SimpleXML的不關心使用的行尾。 $ A1 = 「 \ n \ r \ n \ r 」; –
2008-11-04 11:41:03
$ x = new SimpleXmlElement($ a1); print_r($ x); SimpleXMLElement對象 ( [TAG1] => SimpleXMLElement對象 ( [TAG2] => SimpleXMLElement對象 ( [0] => ) ) ) – 2008-11-04 11:41:41
不錯的嘗試。在Windows中生成XML字符串_is_,所以我在Ubuntu中替換了所有行結束符(unix2dos -u -o filename)。沒有區別。 – 2008-11-04 11:45:25