我有一个使用 CodeIgniter 框架用 PHP5 编写的应用程序。我让它在 Windows(使用 Xampp)和 Ubuntu(使用标准 Apache、PHP、MySQL 堆栈)上运行。
我有一个表单,它接受 XML,解析它(使用 simpleXML)并将结果发布到数据库中。
在 Windows 上 - 没问题,按预期工作。
在 Linux 上 - 大问题。它出错了。
我已经仔细检查了 XML,这很好。
我删除了大量的XML,似乎还可以。
我认为这与从表单发布的 XML 字符串的大小有关,但不确定。同样,在 Windows 上没问题 - 在 Linux 上,它会出错。
表格中发布的数据大小约为 160k(是的,这是很多文本,但它是自动化的 - 最终将达到 200k 左右)。
错误如下。
非常感谢任何帮助。
致命错误:在 /var/www/ci/system/application/controllers/system.php:49 中未捕获的异常“异常”和消息“字符串无法解析为 XML” 堆栈跟踪:#0 /var/www/ci/ system/application/controllers/system.php(49): SimpleXMLElement->__construct('') #1 [内部函数]: 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} 抛出 /第 49 行的 var/www/ci/system/application/controllers/system.php
第 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,一切正常。谢谢各位指点。