Osticket: 关于 php 7 中 AssignmentForm 和 TransferForm 声明的警告

创建于 2016-04-13  ·  30评论  ·  资料来源: osTicket/osTicket

在 php 7 上使用最新的开发版本会给出以下警告:
警告:AssignmentForm::render($options) 的声明应该与 /opt/osticket/osTicket-develop/include/class 中的 Form::render($staff = true, $title = false, $options = Array) 兼容。 4144 行上的 forms.php

警告: TransferForm::render($options) 的声明应该与 /opt/osticket/osTicket-develop/include/class 中的 Form::render($staff = true, $title = false, $options = Array) 兼容。 4264 行上的 forms.php

这些警告会干扰弹出的对话框,也会影响模板上的间距

附加的补丁差异修复了这些警告

类.forms.php.zip

bug php

最有用的评论

我在当前的 osTicket 1.10 稳定版本上也遇到了这个问题。 它可以防止“传输”和“分配”对话框呈现为白色方块以外的任何内容,还可以防止api/cron.php检查电子邮件。 当我运行cron.php ,它会产生以下错误消息:

PHP Warning:  Declaration of AssignmentForm::render($options) should be compatible with Form::render($staff = true, $title = false, $options = Array) in /var/www/helpdesk/include/class.forms.php on line 4150
PHP Warning:  Declaration of TransferForm::render($options) should be compatible with Form::render($staff = true, $title = false, $options = Array) in /var/www/helpdesk/include/class.forms.php on line 4270

以下是管理面板中的服务器信息:

osTicket Version     v1.10 (901e5ea) —  Up to date
Web Server Software  Apache/2.4.18 (Ubuntu)
MySQL Version        5.7.17
PHP Version          7.0.15-0ubuntu0.16.04.4

服务器正在运行 Ubuntu 16.04.2 LTS 并且已完全更新。

#3349 拉取请求中提出的修改为我解决了这个问题。

所有30条评论

有什么理由不将更改包含在拉取请求中吗?

抱歉,我没有 git repo,我只是在我的 linux 系统上用 vi 编辑了文件。


来自:ntozier [email protected]
发送: 2016 年 4 月 13 日,星期三 10:52 AM
至:osTicket/osTicket
抄送:比尔·里奇
主题:回复:[osTicket/osTicket] 关于 php 7 中 AssignmentForm 和 TransferForm 声明的警告 (#3033)

有什么理由不将更改包含在拉取请求中吗?

您收到此消息是因为您创作了该线程。
直接回复本邮件或在Gi tHub上查看

他们说一张图片值 1000 字。

capture

在使用 osTicket 1.10 RC3 和 PHP7 时,我注意到了同样的情况。
期待更新版本的修复。

有关不同的修复,请参阅 #3349

这个警告在 v1.10 稳定版本中仍然发生: http :

今天再次确认:在我的 1.10 测试站点上运行 IIS 8.5 和新升级的 PHP 7.0.14。

PHP 7.1 也有同样的问题,所以我必须降级到非 PHP 7 版本,因为 OsTicket 有问题。 Aòso无法登录管理操作员区域消息:Token CSRF valido richiesto

这个问题在 1.10 稳定版本中仍然存在。 @martin-rueegg提到

我在当前的 osTicket 1.10 稳定版本上也遇到了这个问题。 它可以防止“传输”和“分配”对话框呈现为白色方块以外的任何内容,还可以防止api/cron.php检查电子邮件。 当我运行cron.php ,它会产生以下错误消息:

PHP Warning:  Declaration of AssignmentForm::render($options) should be compatible with Form::render($staff = true, $title = false, $options = Array) in /var/www/helpdesk/include/class.forms.php on line 4150
PHP Warning:  Declaration of TransferForm::render($options) should be compatible with Form::render($staff = true, $title = false, $options = Array) in /var/www/helpdesk/include/class.forms.php on line 4270

以下是管理面板中的服务器信息:

osTicket Version     v1.10 (901e5ea) —  Up to date
Web Server Software  Apache/2.4.18 (Ubuntu)
MySQL Version        5.7.17
PHP Version          7.0.15-0ubuntu0.16.04.4

服务器正在运行 Ubuntu 16.04.2 LTS 并且已完全更新。

#3349 拉取请求中提出的修改为我解决了这个问题。

@peterson-dane 你能分享你的解决方案吗?

我有与您几乎相同的配置的相同问题。

@PrajapatiChirag在文件include/class.forms.php 中,更改:
function render($options) {

function render($staff = true, $title = false, $options = Array()) {

应该出现三个。

@solsticesurfer ,谢谢,也解决了我在 debian Stretch (9.2) 上的问题。

这里发生了什么? 我也有这个错误,但关于它的第一个评论是 1 1/2 岁?

osTicket 核心,v1.10.1
最新稳定版本,2017 年 9 月 14 日发布

我就是这样安装的。 怎么可能在 1 1/2 年后没有修复错误? 特别是因为解决方案很简单,而且其他人已经在这里编写了修复程序......

正如您所说:“最新稳定版本,2017 年 9 月 14 日发布”

“修复”发布于:
2017oct03

感谢您制作它,所以我不必离开这个线程来回答这个问题。

@ntozier

该修复程序已于 2016 年发布。 1 1/2 年前关于此错误的第一条评论。 我在 2016 年 9 月在https://github.com/osTicket/osTicket/pull/3349/commits/bde15e2acec29a26c73918ae17aa0774fb5048c4上找到了一个修复程序

“最新稳定版本,2017 年 9 月 14 日发布”

发现错误 1 ​​1/2 年后和发布解决方案 1 年后,“稳定版本”仍然包含错误。

而且它不是一个很难找到的错误。 如果没有此修复程序,PHP 7(现在的标准)上的 osTicket 根本无法工作。

也许离开线程来回答问题会更好。

简单地说,没有新版本。 然后是 1.10,现在是 1.10.1(安全更新)。 1.11 还没有发布。

无法保证在 1.11 发布时会使用此线程中的修复程序,并且不太可能如此,因为仅此线程就有多个修复程序并且尚未合并。

@ntozier

随着你的每一个回复,我越来越担心。 这也与态度有关。

PHP 7 是目前的标准。

有一个错误,1 1/2 年前第一次看到。 它阻止 os Ticket 在 PHP 7 上工作。

1 1/2 年后它仍然没有修复???

这就是为什么我在我的第一篇文章中问“这里发生了什么?”

现在可以花时间安装这个程序,投入使用等吗? 可以建议客户使用它吗?

PHP 7 是目前的标准。

这种说法完全是主观的。 我认识的人仍然更喜欢 PHP 5.6 而不是 PHP 7 ...

有一个错误,1 1/2 年前第一次看到。 它阻止 os Ticket 在 PHP 7 上工作。

它不会阻止 osTicket 为 _everyone_ 工作,因为我知道有人在他们的生产环境中使用 PHP 7 工作得很好。

1 1/2 年后它仍然没有修复???

正如@ntozier所说,此线程中有多个针对此问题的修复程序,需要花时间查看它们并找到不会破坏其他任何内容的最佳修复程序,并确保它符合我们的编码风格。 另外,这不是我们 Github 页面上的唯一问题……有 1,177 个。 得把它们都看一遍。

现在可以花时间安装这个程序,投入使用等吗? 可以建议客户使用它吗?

当然没问题! 如果您担心,或者您编译的 PHP 7 无法处理 v1.10.1,那么只需降级到 PHP 5.6,直到它完全兼容。 👍

@绝地凯夫

我认识的人仍然更喜欢 PHP 5.6 而不是 PHP 7 ...

我也认识骑马的人。 对 PHP 5.6 的支持已于 1 月完成,安全更新将于明年结束。

我应用了补丁,现在似乎一切正常。 但这确实让我担心:)

你不应该担心。 事情变得越来越好。 过去两年对于 osticket 用户来说并不容易(我认为特别是对于 osticket 用户)。 主要开发人员之一(greezybacon,一个非常友好、乐于助人且技术娴熟的编码员!)已经离开了该项目,需要一些时间来寻找能够很好地支持该项目并填补他留下的巨大空白的新开发人员。 这已经减缓了一段时间的发展。 但是当你看开发速度增长的大图时,你会在github上看到。 并且即将发生重大变化(例如,api 的完整改造、自定义队列功能 -> 可作为 alpha 使用)。

新的熟练社区成员,如 clonemeagain https://github.com/clonemeagain或 Micke1101 https://github.com/Micke1101也通过他们的插件为社区贡献了许多很酷的东西。 他们还用他们的丰富知识帮助了论坛中的许多用户。 ntozier 论坛的主持人多年来帮助(并且正在帮助)这么多人。 但是人们并不容易帮助他们。 他们不阅读指南,忘记重要信息,有时他们无法很好地沟通或非常不礼貌。

如果您只关注单个问题报告等小细节,则不容易看到这一点。 有很多问题报告。 其中许多是旧的,写得不好,重复等等。 很难跟踪这片丛林中的事物。

很多人有很多愿望,但没有多少人在帮助这个项目。 他们中的大多数人只看到自己的观点,并没有兴趣帮助他人。 但这使得如此小的团队很难在他们期望的时间表内完成所有愿望。 我不知道有任何开源帮助台项目具有类似的强大功能,并且有这么多优秀的人一起工作!

只有我的两美分 ;-)

如果有什么事情听起来很奇怪,那么这是我的借口:
我不是以英语为母语的人,主要是使用像https://www.deepl.com/translator这样的深度学习翻译工具。 来自科隆的问候(是的,那是德国的大城市,那里有所有的难民。他们中的大多数人都很好,不要相信你的总统。他是一个分裂者)。

当我在 10 月 3 日进行 solsticesurfer 指出的更改时,Assign 弹出窗口变成了一个白色的空白栏/窗口。 见附件。

Debian 克星 x64
4.13.13-1

2017-12-05 12_48_01-osticket __ staff control panel

@jonshado他们以前工作过吗? 如果是,那么我会说你没有做对。 我在我的生产系统上运行了这个补丁,但没有你的结果。 如果不是,那么您遇到了与此补丁无关的 AJAX 问题。

@ntozier
有趣的。 我现在已经恢复了,因为我已经仔细检查并正确替换了显示差异的上一篇文章中的行。 我已经在此处包含了这些文件。

我们在周五上线,所以很多这些项目现在才出现,因为我的团队正在通过系统进行调查。

我在功能上没有意识到系统存在任何其他问题。 但是,查看我的系统信息,它不相信我已将 cgi.fix_pathinfo 设置为 1,尽管我在 php.ini 中这样做了。

我已经包含了系统信息,我一直在尝试编辑的 php.ini 和 forms.php。 我仍在调查 ost 无法识别 php.ini 更改的原因。

服务器信息

osTicket 版本 | v1.10.1 (9ae093d) — 最新
网络服务器软件 | Apache/2.4.29 (Debian)
MySQL 版本 | 10.1.29
PHP 版本 | 7.0.25-1

gdlib | 用于图像处理和 PDF 打印
地图 | 用于电子邮件获取
xml | XML API
xml-dom | 用于 HTML 电子邮件处理
json | 提高创建和处理 JSON 的性能
字符串 | 强烈推荐用于非西欧语言内容
法尔| 强烈推荐用于插件和语言包
国际| 强烈推荐用于非西欧语言内容
文件信息 | 用于检测上传的文件类型
APCu | 提高整体性能
Zend Opcache | 提高整体性能

cgi.fix_pathinfo |
日期.时区| 美国/纽约

架构 | osticket_db (本地主机)
已用空间 | 5.14 兆字节
附件空间 | 0.00 兆字节
时区 | EST(解释为 America/New_York)

共享文件

更改 php.ini 后,您需要重新启动 Apache。 是你做的吗?

@ntozier是的,我有。 我也完全重新启动了系统。 根据其他社区帖子,似乎因为 php 安装是作为 apache 模块运行的,所以信息部分中的警告不会消失,所以我认为这不会产生影响。

安装的其余部分显示正常。 我担心的是这些错误会阻止 cron 作业正确运行。 我的 cron 日志中没有任何内容。 我将通过管理面板关闭获取(所以它应该只是 cron 检查邮件),希望我会看到电子邮件被摄取。

同样的问题在这里。 无法弄清楚它是什么。 但这就是您可以再次使用系统的方式。

/var/www/html/include/class.forms。 php:4339

 function render($staff=true, $title=false, $options=array()) {

//        switch(strtolower($options['template'])) {
//        case 'simple':
            $inc = STAFFINC_DIR . 'templates/dynamic-form-simple.tmpl.php';
//            break;
//        default:
//            throw new Exception(sprintf(__('%s: Unknown template style %s'),
//                        'FormUtils', $options['template']));
//        }

        $form = $this;
        include $inc;
    }

@ossd对我来说,部门转移也有与空白代理窗口相同的问题。 看起来它使用了与代理窗口相同的代码,所以我将您的修复应用到传输部分并且它起作用了。

我只希望这不会破坏其他任何东西!

包括/class.forms。 php:4462

function render($staff = true, $title = false, $options = Array()) {

//        switch(strtolower($options['template'])) {
//        case 'simple':
            $inc = STAFFINC_DIR . 'templates/dynamic-form-simple.tmpl.php';
//            break;
//        default:
//            throw new Exception(sprintf(__('%s: Unknown template style %s'),
//                        'FormUtils', $options['template']));
//        }

        $form = $this;
        include $inc;

}

此警告的任何最终解决方案? 或者可能有人可以分享工作补丁?

@iprok

拉取请求应解决1.11.x系列。 欢迎您在1.10.x上试用它,但它_可能_破坏某些东西(不知道;尚未测试)。

干杯。

此页面是否有帮助?
0 / 5 - 0 等级