26

将我的 PHP 升级到 5.4.3(WAMP 服务器 2.2)后,我在 CakePHP 1.3 中制作的 Web 应用程序在我的索引中显示以下错误:

严格标准:在第 63 行重新定义 C:...\cake\cake\libs\object.php 中已定义的类 Object 的构造函数

严格标准:非静态方法 Configure::getInstance() 不应在第 49 行的 C:...\cake\cake\bootstrap.php 中静态调用

我发现有些人通过将error_reportingphp.ini 中的设置为E_ALL & ~E_STRICT.

我在我的计算机上的两个 php.ini 文件(C:\wamp\bin\php\php5.4.3 和 C:\wamp\bin\apache\apache2.4.2\bin)中都这样做了,但它没有解决问题.

我也尝试php_value error_reporting 6143输入 C:...\cake.htaccess 但没有成功。

有谁知道我该如何解决这个问题?由于火鸟,我无法升级我的 CakePHP。

4

7 回答 7

23

php 5.4 的变化之一是 E_STRICT 现在是 E_ALL 的一部分

因此,在您的 /cake/bootstrap.php 中,您可以从错误报告中删除 E_STRICT:

error_reporting(E_ALL ^ E_STRICT);

并再次与 5.4 之前的版本兼容。

于 2012-09-01T15:50:53.490 回答
14

如果你想更新你的蛋糕版本,那么不要修改蛋糕核心文件,这很糟糕,进入你的 Config/core.php 文件并查找错误处理程序配置:

Configure::write('Error', array(
    'handler' => 'ErrorHandler::handleError',
    'level' => E_ALL & ~E_DEPRECATED,
    'trace' => true
));

并将“级别”替换为:

...
'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
...
于 2013-04-18T22:28:41.323 回答
9

请更换

error_reporting = E_ALL 

在你的php.ini中,用

error_reporting = E_ALL & ~E_STRICT

为了我

error_reporting(E_ALL ^ E_STRICT);

这在该问题的已接受答案中显示不起作用,并在我的 Joomla 网站的 JError 错误中检测到无限循环。

于 2013-03-18T16:21:55.837 回答
4

您正在使用较新的 php 版本。在 php 5.4 中,E_STRICT 是 E_ALL 的一部分

在 cake 1.3 中,打开文件 /cake/bootstrap.php 并像这样更改 error_reporting

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
于 2014-01-10T18:09:19.420 回答
1

如果您在蛋糕控制台输出中遇到 PHP Strict 警告,请查看您的app/config/core.php.

在 CakePhp 1.3error_reporting(...)中被'log'选项覆盖,因此请确保您在此处排除E_STRICT

/**
 * CakePHP Log Level:
 *
 * In case of Production Mode CakePHP gives you the possibility to continue logging errors.
 *
 * The following parameters can be used:
 *  Boolean: Set true/false to activate/deactivate logging
 *    Configure::write('log', true);
 *
 *  Integer: Use built-in PHP constants to set the error level (see error_reporting)
 *    Configure::write('log', E_ERROR | E_WARNING);
 *    Configure::write('log', E_ALL ^ E_NOTICE);
 */
Configure::write('log', E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
于 2015-06-23T19:08:12.243 回答
0

确保您已更新正确的 php.ini 文件 - 如果您使用以下代码在根目录中创建 php 文件

<?php

phpinfo();

?>

并将其加载到您的网络浏览器中,它会告诉您正在使用哪个 ini 文件,以防您错过了一个。

htaccess 文件也可能通过值设置该php_flag error_reporting值,也可以按目录设置。

于 2012-09-01T15:42:54.240 回答
0

从文件夹(根)cake 文件 bootstrap.php

if (!defined('E_ALL')) {
    define('E_ALL', 8192);
}

File debugger.php from folder (root)cake\libs

error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);
于 2015-07-27T18:37:55.600 回答