日期:2014-05-17  浏览次数:20421 次

Call-time pass-by-reference has been deprecated 问题
这是一个获取本地IP的函数

源码如下:
PHP code
public function winip( )
    {
        @$this->execcmd( "ipconfig /all", &$this->return_array );
        if ( $this->return_array )
        {
            return $this->return_array;
        }
        $cmdir= $_SERVER['WINDIR']."\\system32\\ipconfig.exe";
        if ( file_exists( $cmdir) )
        {
            @$this->execcmd( $_ocmdir ." /all", &$this->return_array );
        }
        else
        {
            @$this->execcmd( $_SERVER['WINDIR']."\\system\\ipconfig.exe /all", &$this->return_array );
        }
        return $this->return_array;
    }

    public function linuxip( )
    {
        @$this->execcmd ( "ifconfig -a", &$this->return_array );
        return $this->return_array;
    }
      
       
        public function execcmd ( $a , $b)
         {
           $b=shell_exec($a);
         }
}


执行后提示标题错误,请高手帮忙~

------解决方案--------------------
execcmd 后面有  是怎么回事?


------解决方案--------------------
http://yourin.blogbus.com/logs/43604755.html
------解决方案--------------------
又被无视了,算……
------解决方案--------------------
@$this->execcmd和左括号之间有unicode字符,难道你的编辑器没显示这个?
------解决方案--------------------
public function execcmd ( $a , $b)
{
$b=shell_exec($a);
}

在类内这样写会不会有问题?

你的出错信息主要是说引用传递被抛弃
会不会是这个? &$this->return_array
------解决方案--------------------
呵呵, 

这句说的是不推荐对函数调用的参数使用"引用", 这个是php5(或5.3)后新引进的错误信息,因为php5开始对象都是用引用操作的. 

这只是一个警告信息,所以程序运行不应该被影响. 你可以屏蔽错误信息,或将allow_call_time_pass_reference 设为true

如果你的朋友没报该信息,只是他的版本问题或设置或他屏蔽了错误信息.

如果你的运行有其它问题,应该与此无关.