利用magpiess作为PHP的rss抓取以及显示的模块,在使用时(具体是一个页面调用两次这个模块,第一个OK,第二个出现这个错误)错误:

Fatal error: Cannot redeclare fetch_rss() (previously declared in /usr/share/php5/magpierss/rss_fetch.inc:90) in /usr/share/php5/magpierss/rss_fetch.inc on line 223

根据提示,错误的原因是重复定义了fetch_rss模块,在文件rss.fetch.inc查找223以及90行,发现程序并没有问题,问题应该出在调用的时候,经过搜索发现是调用该模块时两次都使用了require,将第二次调用改成require_once,解决问题。为了避免这个问题,每次调用都用require_once比较好。

require和require_once的区别:

  • require 的使用方法如 require("MyRequireFile.php"); 。这个函式通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的一部份。
  • equire_once的作用是会检查之前是否加载过该文件,如果没有加载则加载 如果加载过就不再次加载
    比如某文件定义了一个类型 如果两次加载该文件会出现错误,require_once会避免这个错误。