首页 > 编程技术 > php

Deprecated: Function session_register() is deprecated解决办法

发布时间:2016-11-25 17:39

     今天在换了Php环境后我们发现有Deprecated: Function session_register() is deprecated错误提示了,下面我来给各位朋友介绍介绍。

我们先来看代码

 代码如下复制代码

<?php
// Fix for removed Session functions
function fix_session_register(){
    function session_register(){
        $args = func_get_args();
        foreach ($args as $key){
            $_SESSION[$key]=$GLOBALS[$key];
        }
    }
    function session_is_registered($key){
        return isset($_SESSION[$key]);
    }
    function session_unregister($key){
        unset($_SESSION[$key]);
    }
}
if (!function_exists('session_register')) fix_session_register();
?>

查了一下出现这个问题的地方不多,找到了另外一个方法,直接

 代码如下复制代码

session_register( &ldquo;abc&rdquo; ) ;

改成

$_SESSION['abc'] = null;

即可

总结

从上面的过程来说我们说明了明这个函数在PHP5.3版本中被删除了。也就是这个函数不再可用了,大家直接使用下面的方法即可了。

使用fck的朋友可能会碰这样一个情况就是如果上你的文件名为英文字母是没有任何问题,如果上传的是中文汉字就会出现中文名乱码了,下面我来给大家分析与介绍解决方法。

主要原因是fck中的编(utf-8)码和本地的编码(gbk)环紧不一致导致的,修改如下5个文件可以解决

更改FileUpLoad函数 ckeditor/" target="_blank">fckeditoreditorfilemanagerconnectorsphpcommands.php

在文件中找到以下代码:

 代码如下复制代码

// Get the extension.  
$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;  
$sExtension = strtolower( $sExtension ) ; 

在其后加上一句:

 代码如下复制代码

$sFileName = strtotime('now').'.'.$sExtension; 

这样文件名就是 当前时间戳+后缀名了。既解决了中文乱码,也解决了文件重名

另一种解决办法,保留中文名

文件4:fckeditoreditorfilemanagerconnectorsphpcommands.php

找到

 代码如下复制代码

function FileUpload( $resourceType, $currentFolder, $sCommand ){

。。。

      找到

      //move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;

move_uploaded_file( $oFile['tmp_name'], iconv("utf-8","gbk",$sFilePath));

}

对文件名$sFilePath转码。

 

文件5:fckeditoreditorfilemanagerconnectorsphputil.php

找到

 代码如下复制代码

function ConvertToXmlAttribute( $value ){

       。。。

       找到

      //return ( utf8_encode( htmlspecialchars( $value ) ) ) ;

       return iconv("GBK", "UTF-8", htmlspecialchars( $value ));

}

对内容进行转码。

昨天网站用着用着就提示了Fatal error: Out of memory (allocated 262144),后来百度搜索了一些解决方法,下面我分享给各位朋友。

从上面的Out of memory (allocated 262144)看出是超过了256MB了吧,这个我们只要调整一下php.ini中的一个参考即可

解决方法是修改php.ini,加大memory_limit

修改php.ini

如下的区域

 代码如下复制代码

memory_limit = 64M    

重启apache即可解决。

本文章来介绍一个关于PHPExcel Allowed memory size of 内存泄漏解决办法,有碰到此类的朋友可参考参考。

我在利用PHPExcel导入一个一个大概31列、500行的文档,实行导入之后,PHP会报如下错误:

Fatal error: Allowed memory size of 209715200 bytes exhausted (tried to allocate 35 bytes)

inX:wwwClassesPHPExcelCell.php on line 711


解决办法是在 PHPExcel_Worksheet 类中增加方法:

 代码如下复制代码

 public function Destroy() {
     foreach($this->_cellCollection as $index => $dummy) {
         $this->_cellCollection[$index] = null;
     }
 }

并在 PHPExcel 类中增加方法:

 public function Destroy() {
     foreach($this->_workSheetCollection as $index => $dummy) {
         $this->_workSheetCollection[$index]->Destroy();
         $this->_workSheetCollection[$index] = null;
     }
 }

还有一种办法就是修改你php内存配置,在中加入

在php文件增进一条语句

 代码如下复制代码

ini_set('memory_limit', '-1');         

ini_set('memory_limit','265M')

修改php.ini(保举)

 代码如下复制代码

memory_limit = 12M


.htaccess文件,添加如下内容

 代码如下复制代码

php_value memory_limit 12M

有些朋友在使用mysql连接时会出现No such file or directory错误提示,下面我来总结解决办法。

连接代码

 代码如下复制代码

$this->linkid = @mysql_pconnect($host, $user, $password) or die(mysql_error());


Make a phpinfo() page.  Look for &lsquo;mysql.default_socket&lsquo;, &lsquo;mysqli.default_socket&lsquo;, and

&lsquo;pdo_mysql.default_socket&lsquo;.  Remember their value; this is where PHP is trying to connect to MySQL.

解决办法

1.首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回空,而mysql_error()返回&ldquo;No

such file or directory&rdquo;。
2.写个phpinfo页面,找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket。
3.启动mysql,执行命令 STATUS; 记下UNIX socket的值。
4.如果2和3的值不一样,则打开php.ini(可以从phpinfo页面中找到php.ini的位置,默认是/private/etc/php.ini)

,将2中提到的三个配置项的值改成3的值。
5.重启apache。

标签:[!--infotagslink--]

您可能感兴趣的文章: