PHP 5.4 Call-time pass-by-reference - 在这里轻松修复?

Posted

技术标签:

【中文标题】PHP 5.4 Call-time pass-by-reference - 在这里轻松修复?【英文标题】:PHP 5.4 Call-time pass-by-reference - Easy fix here? 【发布时间】:2013-11-08 13:01:55 【问题描述】:

我在使用 Centos 5.9、php 5.4 和较旧的 PHP 程序扩展(typo3 CMS)时收到此错误消息。

PHP 致命错误:第 279 行的 class.tx_spscoutnetcalendar_pi1.php 中删除了调用时传递引用

这是模拟php代码功能:

    // ********* Start XML code *********
    // get XML data from an URL and return it
    function fetchCalendarData($xmlUrl,$timeout) 

            $xmlSource="";
            $url = parse_url($xmlUrl);

            $fp = fsockopen($url['host'], "80", &$errno, &$errstr, $timeout);
            if ($fp) 
                    fputs($fp, "GET ".$url['path']."?".$url['query']." HTTP/1.1\r\nHost: " . $url['host'] . "\r\n\r\n");
                    while(!feof($fp))
                    $xmlSource .= fgets($fp, 128);
            
                    // strip HTTP header
        if ($pos = strpos($xmlSource,"<?xml"))  // this has to be the first line
            $xmlSource = substr($xmlSource, $pos);
         else 
            $xmlSource="";
        
    // I have no idea why, but at the end of the fetched data a '0' breaks the XML syntax and provides an 
    // error message in the parser. So I just cut the last 5 characters of the fetched data
    $xmlSource = substr($xmlSource,0,strlen($xmlSource)-5);
            return $xmlSource;
    

并明确这一行 279

$fp = fsockopen($url['host'], "80", &$errno, &$errstr, $timeout);

这里有任何帮助,我不是php专家。

【问题讨论】:

您之前创建过变量吗? 重复 ***.com/questions/12322811/… ***.com/questions/13553698/… ***.com/questions/18684222/… ... PHP 5.4 Call-time pass-by-reference - Easy fix available?的可能重复 【参考方案1】:

只需像这样删除前导&amp;

$fp = fsockopen($url['host'], "80", $errno, $errstr, $timeout);

变量仍然通过引用传递,但从 PHP 5.4 开始,您不需要 &amp; 来表明这一点。

【讨论】:

+1 PHP documentation 表示“从 PHP 5.3.0 开始,您将收到一条警告,当您在 foo(& $a);。从 PHP 5.4.0 开始,调用时传递引用已被删除,因此使用它会引发致命错误。

以上是关于PHP 5.4 Call-time pass-by-reference - 在这里轻松修复?的主要内容,如果未能解决你的问题,请参考以下文章

手机浏览我的phpwind网站网站时,出现Warning: Call-time pass-by-reference has been deprecated - argum

在 PHP 5.4 中设置 PHP-FPM

将 php 代码从 5.4 迁移到 php 7

php Laravel 5.4组件和插槽

如何在 PHP >= 5.4 的特征中重载类构造函数

如何在centos 6中将php 5.3更新为5.4而不会出错?