php错误提示:Call-time pass-by-reference has been deprecated

 更新时间:2016年11月25日 17:38  点击:2342
今天在写引用时突然出现了Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of getimagesize(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer错误,后来才知道原因是此方法已不被赞成并在 PHP/Zend 未来的版本中很可能不再支持了

解决办法

第一种方法、 把php.ini的display_errors = on改成display_errors = off (不显示错误)

第二种方法、allow_call_time_pass_reference = Off 变成 allow_call_time_pass_reference = On

上面是对php.ini进行修改,但是如果你没有权限可以修改程序,下面我举个简单的例子

可能出现问题的

 代码如下 复制代码

function test1($a,$b){

$b = "fun_test1";

return;

}

$a = "a_value";

$b = "b_value";

test1($a,&$b);

 

不会有问题出现

 代码如下 复制代码

function test2($a,&$b){

$b = "fun_test2";

return;

}

$a = "a_value";

$b = "b_value";

test2($a,$b);

我们知道php在数组中写变量有二几种方法,我们出现这种提示就是你写成了[name]这种所以会有Notice: Use of undefined constant name - assumed name提示了,解决办法参考下文。

关闭 PHP 提示的方法

搜索php.ini:

 代码如下 复制代码

  error_reporting = E_ALL

改为:

 代码如下 复制代码

  error_reporting = E_ALL & ~E_NOTICE

还有个不是办法的办法就是

在每个文件头上加

error_reporting(0); 虽然不好弄但是可以解决问题

如果没有修改php.ini权限的朋友可参考我的方法来解决

源文件:

 代码如下 复制代码

$room[name]  = $Name;
$room[retailrate]  = $RetailRate;

改成

 代码如下 复制代码

$room['name']  = $Name;
$room['retailrate'] = $RetailRate;

在php中如果我们把uft8字符串转换成gbk或gb2312都会出现乱码或丢失的问题,因为gbk编码范围与uft8编码范围的问题,下面我们简单的列了一个gbk与utf8编码范围表,看了就知道原因了。

一、编码范围
1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文
x80-xff 中文


2. UTF-8 (Unicode)
u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)

ps: 韩文是大于[u9fa5]的字符

 代码如下 复制代码

$c = '测试•字符传换•五一快乐!';

echo iconv('utf-8', 'gbk',$c);

只会输出: 测试 后出全会丢失"."

解决方法:

加 //IGNORE

 代码如下 复制代码

$c = '测试•字符传换•五一快乐!';

echo iconv('utf-8', 'gbk//IGNORE',$c);

输入出:测试字符传换五一快乐!

例2

 

 代码如下 复制代码
<?php
  echo $str= ‘你好,这里是卖咖啡!';
  echo '<br />';
  echo iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8
  echo '<br />';
  echo iconv_substr($str, 1, 1, 'UTF-8'); //按字符个数截取而非字节
  print_r(iconv_get_encoding()); //得到当前页面编码信息
  echo iconv_strlen($str, 'UTF-8'); //得到设定编码的字符串长度
?>
在使用phpmyadmin时我们可能会碰到phpmyadmin配置文件现在需要绝密的短语密码错误提示,下面我来给大家总结解决办法,有需要了解的朋友可参考。

配置如下:phpmyadmin/config.inc.php

 代码如下 复制代码

<?php
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = 'sakia';(其中的"sakia"自定义)
?>

如果你的phpmyadmin中没有config.inc.php 这个文件我们要找到 phpMyAdmin 文件中有一个文件“config.sample.inc.php”,然后重命名为“config.inc.php”上传服务器。

然后把
 

 代码如下 复制代码
$cfg['blowfish_secret'] = ”;

或其它值即可

上面介绍的是windows如果是linux中的怎么解决

那么CentOS下安装的phpmyadmin中的“$cfg['blowfish_secret'] =”语句在config.inc.php里

 代码如下 复制代码
 vim /usr/share/phpmyadmin/config.inc.php

找到

 代码如下 复制代码
 $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

在=后面加上任意字符

 代码如下 复制代码
 $cfg['blowfish_secret'] = 'pooy'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

pooy是我随意加上的字符

可以使用session的朋友有经常会碰到Warning: session_start() [function.session-start]错误提示了,这个问题其实就是在session之前有数据输入了,解决办法很简单下面我来给大家总结。

我的电脑中的错误提示

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:APMServ-v5.2.6APMServ5.2.6wwwhtdocsKingNerOAuserUserKqManage.php:1) in D:APMServ-v5.2.6APMServ5.2.6wwwhtdocsKingNerOAusercheckaccess.php on line 2

原因就是前面有输出

解决办法:

修改php.ini中的session.auto_start = 0 为 session.auto_start = 1
output_buffering =改为on或者任何数字。

linux中解决办法

解决办法:

方法1、注释掉/etc/php.ini中
session.save_path = “/var/lib/php/session”
方法2、查看apache用户和组,然后将该用户加到session文件夹所处的组中。
方法3,在session_start() 前不要有任何输出!


错误提示2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at E:phpcodeadmin.php:1) in E:phpcodelogolistadminlogo.php on line 2

就是 session变量需要系统的临时空间

session.save_path = "设置一个有效文件夹的绝对路径"

(比如 session.save_path = "C:WINDOWStemp" )

session.save_path =前面的 ' ; '  号去掉

另外编辑该文件夹的权限 添加EVERYONE 有写入修改权限即可 !

[!--infotagslink--]

相关文章