MAMP php5严格的标准


MAMP php5 strict standards

我正在尝试将error_reporting设置为E_ALL&mamp的php.ini中的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()不应在第117行上的www/concrete/librarys/Cache.php中静态调用

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

尝试将error_reporting设置为E_ALL&.htaccess和index.php文件中的E_STRICT。没有一个奏效。

请提供解决方案。

Concrete5有一个设置,它将抑制错误和警告(以及我认为的注意事项)的显示——在Dashboard中->System&设置->环境->调试设置。您有可能将此设置用于隐藏所有错误/警告,这将覆盖配置文件中的设置。

至于@PeeHaa关于抑制错误而不是修复错误的评论,事情并没有那么简单,因为Concrete5 CMS本身有一个TON的php,它会生成通知。我想这是因为在某些东西被弃用之前几年前编写的代码。例如,有大量的系统函数被静态调用,即使该函数没有被声明为"静态"。这在旧版本的PHP中是可以做的,但现在却遭到了反对。不幸的是,我认为你对此无能为力。

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

让Concrete5忽略这些错误并加载页面(包括Dashboard)是非常棘手的。您最好的选择是将PHP降级到最新的5.3.X版本,直到发布与PHP5.4.X兼容的版本。

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

mamp问题:它不允许我们使用php5.3,除非我们有mamp-pro

我使用的解决方案:我使用php5.3转到了xampp,一切都很顺利。

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

查找以下行:加载的配置文件:/Applications/MAMP/bin/php/php5.4.4/conf/hp.ini

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

如果设置在正确的位置,则MAMP不会忽略E_STRICT。