TYPO3 Fluid:抑制 flashMessages 中的 PHP 警告
TYPO3 Fluid: suppress PHP warnings in flashMessages
我正在构建一个基于 TYPO3 的网站,我在其中使用了与 TER 不同的扩展。现在两个插件一起使用会产生不良结果:PHP 渲染网站中的警告。
一个扩展是 tt_products
,它通过访问某个数组中的未定义索引来导致消息。另一个扩展是 tkaddress
,它显示消息。
tkaddress
基于 Fluid-Templates,并使用 <f:flashMessages />
视图助手来显示适当的错误,例如在编辑地址记录时输入了无效的电子邮件地址。
不幸的是,在其他方面被忽略的 PHP 警告也被捕获在这个视图助手中,它给出了像
这样的消息
PHP Warning: Illegal string offset 'name' in /usr/local/www/apache24/data/typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php line 301
这只发生在实时服务器中。在我的本地开发环境中,我没有收到此类消息。两个扩展的版本是相同的,我无法将问题追溯到其根源。
(我知道,修复tt_products中的错误是正确的方法,但我不想修改它)
在 Fluid 中使用 <f:flashMessages />
时,某些设置是否会抑制 PHP 警告?
更新:
开发环境:
- TYPO3 6.1.5
- PHP 5.3.28
- tt_products 2.7.6
- error_reporting(PHP INI):22519
- OS: Windows 7
实时环境:
- TYPO3 6.1.5
- PHP 5.4.40
- tt_products 2.7.6
- error_reporting(PHP INI):22519
- OS:FreeBSD
所以只有 OS 和 PHP 版本不同。我也找不到 PHP 或 TYPO3 相关错误报告设置的区别(两者都将 displayErrors
设置为 1)
PHP 版本似乎导致了您的开发环境和生产环境之间所描述的差异。我引用;
How do I correct this Illegal String Offset?
However, this warning message is new to PHP 5.4. Old versions didn't
warn if this happened. They would silently convert 'type' to 0, then
try to get character 0 (the first character) of the string. So if this
code was supposed to work, that's because abusing a string like this
didn't cause any complaints on PHP 5.3 and below. (A lot of old PHP
code has experienced this problem after upgrading.)
tt_products
您似乎使用的是 tt_products
版本 2.7.6
。
自版本 2.7.6
以来,修复了一些错误,包括文件 class.tx_ttproducts_info_view.php
中的一些代码更改,这也可能会解决您的问题。
尝试将 tt_products
更新到版本 2.7.17
,请参阅:
http://typo3.org/extensions/repository/view/tt_products
如果问题仍然出现在较新版本的扩展中,您可以将问题提交至:
https://forge.typo3.org/projects/extension-tt_products
抑制警告
然而,忽略任何警告并不是您看待的正确方式:
TYPO3: how to supress deprecated warnings?
我正在构建一个基于 TYPO3 的网站,我在其中使用了与 TER 不同的扩展。现在两个插件一起使用会产生不良结果:PHP 渲染网站中的警告。
一个扩展是 tt_products
,它通过访问某个数组中的未定义索引来导致消息。另一个扩展是 tkaddress
,它显示消息。
tkaddress
基于 Fluid-Templates,并使用 <f:flashMessages />
视图助手来显示适当的错误,例如在编辑地址记录时输入了无效的电子邮件地址。
不幸的是,在其他方面被忽略的 PHP 警告也被捕获在这个视图助手中,它给出了像
PHP Warning: Illegal string offset 'name' in /usr/local/www/apache24/data/typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php line 301
这只发生在实时服务器中。在我的本地开发环境中,我没有收到此类消息。两个扩展的版本是相同的,我无法将问题追溯到其根源。
(我知道,修复tt_products中的错误是正确的方法,但我不想修改它)
在 Fluid 中使用 <f:flashMessages />
时,某些设置是否会抑制 PHP 警告?
更新:
开发环境:
- TYPO3 6.1.5
- PHP 5.3.28
- tt_products 2.7.6
- error_reporting(PHP INI):22519
- OS: Windows 7
实时环境:
- TYPO3 6.1.5
- PHP 5.4.40
- tt_products 2.7.6
- error_reporting(PHP INI):22519
- OS:FreeBSD
所以只有 OS 和 PHP 版本不同。我也找不到 PHP 或 TYPO3 相关错误报告设置的区别(两者都将 displayErrors
设置为 1)
PHP 版本似乎导致了您的开发环境和生产环境之间所描述的差异。我引用;
How do I correct this Illegal String Offset?
However, this warning message is new to PHP 5.4. Old versions didn't warn if this happened. They would silently convert 'type' to 0, then try to get character 0 (the first character) of the string. So if this code was supposed to work, that's because abusing a string like this didn't cause any complaints on PHP 5.3 and below. (A lot of old PHP code has experienced this problem after upgrading.)
tt_products
您似乎使用的是 tt_products
版本 2.7.6
。
自版本 2.7.6
以来,修复了一些错误,包括文件 class.tx_ttproducts_info_view.php
中的一些代码更改,这也可能会解决您的问题。
尝试将 tt_products
更新到版本 2.7.17
,请参阅:
http://typo3.org/extensions/repository/view/tt_products
如果问题仍然出现在较新版本的扩展中,您可以将问题提交至:
https://forge.typo3.org/projects/extension-tt_products
抑制警告
然而,忽略任何警告并不是您看待的正确方式:
TYPO3: how to supress deprecated warnings?