【问题标题】:Updating to PHP 5.3 with deprecated functions warning disabled更新到 PHP 5.3 并禁用弃用函数警告
【发布时间】:2010-11-05 09:18:58
【问题描述】:

我非常渴望将我们的一些服务器更新到 PHP 5.3。这将为 Zend Framework 2 和明显的性能更新做好准备。不幸的是,我在这些服务器上有大量遗留代码,这些代码会及时修复,但不能在迁移之前全部修复。我正在考虑更新但禁用除少数开发站点之外的所有开发站点上的弃用功能错误,我可以开始通过更新旧代码来工作。

error_reporting(E_ALL ^ E_DEPRECATED);

这不是一个坏主意,有什么根本原因吗?

【问题讨论】:

    标签: migration deprecated php


    【解决方案1】:

    好吧,您可能会忘记设置标志,并想知道为什么您的应用程序会在下一次 PHP 更新中中断。在没有适当的错误报告的情况下调试应用程序可能会非常令人沮丧。这是我能想到的原因之一。

    但是,如果您这样做,请将其记录在某个地方。在您完全记住设置标志之前,它可以为您节省几个小时。

    【讨论】:

    • 一旦从 PHP 中删除了这些已弃用的功能,使用它们的代码将开始产生 E_WARNING 或致命错误,因此很难错过;)
    • 很好,我不知道 :)。谢谢分享。
    【解决方案2】:

    如果您还没有阅读过migration guide,请特别关注Backward Incompatible ChangesRemoved Extensions

    你有比弃用更大的问题。忽略E_DEPRECATED 是不够的。由于不兼容的更改,还会出现其他类型的错误,或者更糟糕的是,可能会出现意外行为。

    这是一个简单的例子:

    <?php
    function goto($line){
        echo $line;
    }
    goto(7);
    ?>
    

    此代码在 PHP 5.2.x 中可以正常工作并输出 7,但在 PHP 5.3.x 中会出现解析错误。

    您需要做的是获取该指南中的每个项目并检查您的代码并在需要时进行更新。为了加快速度,您可以在第一阶段忽略已弃用的功能,只禁用E_DEPRECATED 的错误报告,但您不能假设在移植到另一个专业时只会收到一些无害的警告PHP 分支。

    也不要忘记你的 hack 并尽快修复已弃用的问题。

    问候,
    阿林

    注意:我试图从实际的角度回答这个问题,所以请不要告诉我忽略警告是不好的。我知道,但我也知道时间不是无限的资源。

    【讨论】:

      【解决方案3】:

      我想你有某种测试服务器?如果没有,您真的应该设置一个并在 PHP 5.3 中测试您的代码。如果您的代码经过了彻底的单元测试,那么测试将需要几秒钟,并且修复它也会相当快,因为​​单元测试会告诉您确切的位置。如果没有,请考虑在下一个版本之前将单元测试作为优先事项,同时完成所有工作,首先禁用E_DEPRECATED 警告并修复出现的任何问题,然后在你有时间时重新启用它.您还可以运行全局查找和替换,以便更轻松地修复错误。

      【讨论】:

        猜你喜欢
        • 2022-12-09
        • 2015-09-15
        • 2020-03-29
        • 2023-04-03
        • 1970-01-01
        • 2020-07-30
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        相关资源
        最近更新 更多