在 Revive 4.1.1 中添加 html5 横幅会导致 PHP 致命错误:无法重新声明 Plugin_BannerTypeHTML_delivery_adRender

Posted

技术标签:

【中文标题】在 Revive 4.1.1 中添加 html5 横幅会导致 PHP 致命错误:无法重新声明 Plugin_BannerTypeHTML_delivery_adRender【英文标题】:Add html5 banner in Revive 4.1.1 gives PHP fatal error: Cannot redeclare Plugin_BannerTypeHTML_delivery_adRender 【发布时间】:2018-04-13 21:36:39 【问题描述】:

当我在 Revive 4.1.1 中向广告系列添加 html5 横幅并单击“保存更改”时,我在管理中看到一个空白页面。 Apache 错误日志包含:

php 致命错误:无法在 /home/applinet/local/ads 中重新声明 Plugin_BannerTypeHTML_delivery_adRender()(之前在 /home/applinet/local/ads/www/lib/OX/Extension/bannerTypeHtml/bannerTypeHtmlDelivery.php:31 中声明) /www/lib/OX/Extension/bannerTypeHtml/bannerTypeHtmlDelivery.php 第 31 行

这可能是什么原因造成的?

我在 Debian 9.2 Linux 上使用 Revive 4.1.1(从之前的 4.0 和 OpenX 升级)和 PHP 7.0 和 mysql 5.5。

【问题讨论】:

您是否包含/要求同一个文件两次?如果是这样,也许你想使用include_oncerequire_once (注意:我不知道你在使用什么,真的只知道php) 【参考方案1】:

我会说您应该找到再次声明函数的位置并将其删除。然而……

一个肮脏的修复就是这样; 找到 Plugin_BannerTypeHTML_delivery_adRender() 函数的声明位置(在 bannerTypeHtmlDelivery.php 中)

然后添加此代码;

if (!function_exists('Plugin_BannerTypeHTML_delivery_adRender')) 
    // the funtion doesnt already exists so declare it here
function Plugin_BannerTypeHTML_delivery_adRender()
//all the function stuff here.

 

澄清....只需将现有函数包装在 if 块中。

正如我所说,这是一个肮脏的修复。

【讨论】:

以上是关于在 Revive 4.1.1 中添加 html5 横幅会导致 PHP 致命错误:无法重新声明 Plugin_BannerTypeHTML_delivery_adRender的主要内容,如果未能解决你的问题,请参考以下文章

GO语言必备的五大开源工具!

观察 Vue 中的异步外部 DOM 变化

html5:在控件视频中添加下载按钮

尝试在 HTML5 中添加音频元素

添加 CSS 边框更改 HTML5 网页中的定位

在 HTML5/JQueryMobile/PhoneGap 中添加滑动支持