警告:mysqli::init():在 [脚本路径] 中尚不允许属性访问


Warning: mysqli::init(): Property access is not allowed yet in [script path]

>我安装了一个新的Typo3安装。我有Windows 7并使用Apache 2.4PHP 5.6.11 与 Zend Engine 2.6.0 和 Xdebug v2.3.3.

Typo3 使用自己的错误处理程序,因此可以控制配置文件中的错误级别。但是,mysqli仍然会为mysqli::init()mysqli::stmt_init()发出警告。在这两种情况下,错误都是

PHP 警告:mysqli::stmt_init():在 W:''typo3''sysext''core''Classes''Database''DatabaseConnection.php 第 782 行中尚不允许属性访问

PHP 警告:mysqli_init():在 W:''typo3''sysext''core''Classes''Database''DatabaseConnection.php第 1190 行中尚不允许属性访问

我试图在关闭语句导致许多警告后读取线程 mysqli + xdebug 断点,但似乎警告与 mysqli 中的一些错误有关。正如我所读到的那样,这些错误应该得到解决。由于这些错误来自 Typo3 的核心,我认为在 DatabaseConnection.php 文件中进行编辑是愚蠢的。但是,我已经使用 mysqli::__construct 而不是 mysqli_init() 测试了我的连接。 mysqli::__construct不会引发任何警告/错误。 http://php.net/manual/en/mysqli.construct.php

在 typo3conf/LocalConfiguration 中.php我将 errorHandlerErrorsexceptionalErrors 设置为 30965 而不是 30466,以便 Typo3 不会为警告设置异常。这只解决了mysqli_init()的问题——而不是stmt_init().

那我该怎么办?

通过在 php.ini 中将错误报告级别设置为 E_ALL 除了E_STRICT,可以解决此问题。这是因为 Typo3 中的内置错误处理程序比默认错误处理程序更敏感。

error_reporting(E_ALL ^ E_STRICT);