【问题标题】:MAMP php5 strict standardsMAMP php5 严格标准
【发布时间】:2012-07-12 11:27:30
【问题描述】:

我正在尝试在 mamp 的 php.ini 中将 error_reporting 设置为 E_ALL & ~E_STRICT。

但这一点都没有受到影响。我通过设置不同的 error_reporting(如 E_NOTICE)确认我正在编辑正确的文件,并检查了 phpinfo 以验证相同。

但只有 ~E_STRICT 没有发生。

当我访问我的 cms (concrete5) 时,它会给我一个严格的错误列表(粘贴下面的前几个):

Strict Standards: Non-static method Cache::get() should not be called statically in www/concrete/models/package.php on line 78

严格标准:非静态方法 Cache::key() 不应在 www/concrete/libraries/cache.php 第 117 行静态调用

严格标准:非静态方法 Cache::getLibrary() 不应在第 121 行的 www/concrete/libraries/cache.php 中静态调用

试图在 .htaccess 和 index.php 文件中将 error_reporting 设置为 E_ALL & ~E_STRICT。没有工作。

请解决。

【问题讨论】:

  • 你为什么试图抑制错误而不是修复它们???

标签: mamp php error-reporting strict concrete5


【解决方案1】:

Concrete5 有一个设置可以禁止显示错误和警告(以及我认为的通知)——在仪表板 -> 系统和设置 -> 环境 -> 调试设置中。 您可能设置了此设置来隐藏所有错误/警告——这将覆盖您在配置文件中的设置。

至于@PeeHaa 关于抑制错误而不是修复错误的评论,并不是那么简单,因为 Concrete5 CMS 本身有一个 TON 的 php 会生成通知。我认为这是因为几年前在某些东西被弃用之前编写的代码。例如,有大量系统函数被静态调用,即使该函数未声明为“静态”。这在旧版本的 PHP 中是一件好事,但现在不受欢迎。不幸的是,我认为您对此无能为力。

不幸的是,这是使用 Concrete5 的权衡之一。它是目前最好的 CMS,但对于更高级的开发人员来说,它并不总是最复杂的平台。

【讨论】:

    【解决方案2】:

    让 Concrete5 忽略这些错误并加载页面(包括仪表板)非常棘手。最好的办法是将 PHP 降级到最新的 5.3.X,直到发布与 PHP 5.4.X 兼容的版本。

    【讨论】:

      【解决方案3】:

      我通过在我的 imac 上从 mamp 移动到 xampp 解决了这个问题。

      mamp 问题: 它不允许我们使用 php 5.3,除非我们有 mamp pro

      我使用的解决方案: 我使用 php 5.3 迁移到 xampp,一切顺利。

      【讨论】:

        【解决方案4】:

        如果 MAMP 似乎忽略了 php.ini 中的设置(例如 E_STRICT),那么您可能没有编辑正确的文件。你可以通过 phpinfo(); 看到正在加载的配置文件;

        寻找这一行: 加载的配置文件:/Applications/MAMP/bin/php/php5.4.4/conf/php.ini

        注意它在我机器上的 MAMP/bin 中的情况。使用默认的 MAMP 安装,很容易将模板配置文件误认为是实时配置文件。

        E_STRICT 在设置在正确位置时不会被 MAMP 忽略。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-27
          • 2011-10-07
          • 2012-03-12
          • 2013-09-15
          • 2016-12-11
          • 2012-01-24
          • 2012-02-21
          • 1970-01-01
          相关资源
          最近更新 更多