【问题标题】:How can I replace the deprecated set_magic_quotes_runtime in php?如何替换 php 中已弃用的 set_magic_quotes_runtime?
【发布时间】:2016-08-26 19:30:40
【问题描述】:

当我尝试运行我必须使用但未编写的 php 脚本时收到此消息。

Deprecated: Function set_magic_quotes_runtime() is deprecated in /opt/lampp/htdocs/webEchange/SiteWeb_V5/inc/fpdf.php on line 1810

这是第 1810 行:

set_magic_quotes_runtime(0);

如果这是一个不推荐使用的函数,我可以用什么替换它?

非常感谢!

【问题讨论】:

    标签: php deprecated


    【解决方案1】:

    我通过删除那行代码修复了我的问题 通过将它们注释掉,效果很好。

    //if(get_magic_quotes_runtime())
    //  @set_magic_quotes_runtime(0);
    

    【讨论】:

    • 我也一样
    • 为我工作你是明星
    【解决方案2】:

    由于 Magic Quotes 现在默认关闭(和 removed in PHP v8),您可以从代码中删除该函数调用。

    【讨论】:

    【解决方案3】:

    在 PHP 7 中我们可以使用:

    ini_set('magic_quotes_runtime', 0);
    

    而不是set_magic_quotes_runtime(0);

    【讨论】:

      【解决方案4】:

      更新此功能:

      if (version_compare(PHP_VERSION, '5.3.0', '<')) {
        set_magic_quotes_runtime(0);
      }
      else {
        ini_set('magic_quotes_runtime', 0);
      }
      $magic_quotes = get_magic_quotes_runtime();
      $file_buffer = fread($fd, filesize($path));
      $file_buffer = $this->EncodeString($file_buffer, $encoding);
      fclose($fd);
      if ($magic_quotes) {
        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
          set_magic_quotes_runtime($magic_quotes);
        }
        else {
          ini_set('magic_quotes_runtime', $magic_quotes);
        }
      }
      
      return $file_buffer;
      

      【讨论】:

        【解决方案5】:

        将这些代码添加到脚本的顶部以解决问题

        @set_magic_quotes_runtime(false);
        ini_set('magic_quotes_runtime', 0);
        

        【讨论】:

        • 这可能导致哪些潜在问题? @ 符号抑制错误。
        【解决方案6】:

        Gust 在函数前添加前缀“@”为@set_magic_quotes_runtime(0); php 5.4 不再支持,请勿移除或禁用该功能

        【讨论】:

          【解决方案7】:
          ini_set('magic_quotes_runtime', 0)
          

          我猜。

          【讨论】:

          • ini_set 的 magic_quotes_runtime 选项也在 PHP 6.0.0 中被移除
          【解决方案8】:

          我使用了 FPDF v. 1.53 并且由于可能的副作用而不想升级。我根据 Yacoby 使用了以下代码:

          第 1164 行:

          if (version_compare(PHP_VERSION, '5.3.0', '<')) {
              $mqr=get_magic_quotes_runtime();
              set_magic_quotes_runtime(0);
          }
          

          第 1203 行:

          if (version_compare(PHP_VERSION, '5.3.0', '<')) {
              set_magic_quotes_runtime($mqr);
          }
          

          【讨论】:

          • 这确实是最好的解决方案。 +1
          【解决方案9】:

          升级到 FPDF 1.6 版。

          【讨论】:

            【解决方案10】:

            首先检查它是否打开。这应该消除警告,它将确保如果您的代码在旧版本的 PHP 上运行,魔术引号确实是关闭的。

            除非您可以 100% 确定代码永远不会在 PHP 5.3 之前的任何东西上运行,否则不要只删除其他人建议的那行代码。

            <?php
            // Check if magic_quotes_runtime is active
            if(get_magic_quotes_runtime())
            {
                // Deactivate
                set_magic_quotes_runtime(false);
            }
            ?>
            

            get_magic_quotes_runtime 在 PHP 5.3 中不被弃用。
            来源:http://us2.php.net/get_magic_quotes_runtime/

            【讨论】:

            • @stereofrog - 你确定吗?我还没有测试过,但是 get 函数没有在文档中显示,而 set 函数清楚地显示了。
            • 在 PHP > 5.4 中 get 函数总是返回 false,但它还没有被弃用。
            • 不幸的是,get_magic_quotes_runtime() 自 PHP 7.4.0 起已弃用,因此这种方法不再适用。
            【解决方案11】:

            你不需要用任何东西替换它。设置magic_quotes_runtimeremoved in PHP6,因此不需要函数调用。如果您想保持向后兼容性,最好将其包装在 if 语句中,使用 version_compare 检查phpversion

            【讨论】:

            • 并用代码支持这一点:if(version_compare(PHP_VERSION, '5.3.0', '&lt;')) set_magic_quotes_runtime(0);
            猜你喜欢
            • 2020-02-27
            • 2020-06-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-05
            • 1970-01-01
            相关资源
            最近更新 更多