MagpieRSS/Lilina中: Fatal error: Only variables can be passed by reference 问题的解决
📌 TLDR
升级到 PHP 5 后,MagpieRSS/Lilina 报 Fatal error: Only variables can be passed by reference:原因是 PHP 5 收紧了引用传参,文中给出了需要改的那几行代码。
将系统升级到php 5以后,我也遇到了Fatal error: Only variables can be passed by reference: 就在前两天订阅blogsearch的搜索结果时候发现的,估计还是和atom格式的输出导致的。解决方法是照着gregarius项目上的patch修改的。由于目前我用的是cvs版本的MagpieRss,修改位置略有不同,具体diff附后,直接获得修改后的文件:源代码可以参考这里。
diff -b rss_parse.inc
Index: rss_parse.inc
===================================================================
RCS file: /cvsroot/magpierss/magpierss/rss_parse.inc,v
retrieving revision 1.32
diff -b -r1.32 rss_parse.inc
416a417,428
> $real_element = "";
>
> $element_tree = explode("_", $el);
> $real_element =& $this->current_item[ $this->current_namespace ];
>
> foreach ($element_tree as $tree_element) {
> if (!is_array($real_element)) {
> $real_element = array();
> }
>
> $real_element =& $real_element[$tree_element];
> }
418c430
< $this->current_item[ $this->current_namespace ][ $el ], $text);
---
> $real_element, $text);
434c446
< if ( $this->initem ) {
---
> if ( $this->initem && !is_array($this->current_item[ $el ])) {