帝国cms7.5使用php7.4版报错Function get_magic_quotes_gpc() is deprecated 解决方法

解决1:帝国cms7.5使用php7.4版本登陆后台报错(Function get_magic_quotes_gpc() is deprecated)解决方法

今天客户在使用帝国cms7.5登陆后台时报了一个错误,提示:PHP:Deprecated: Function set_magic_quotes_runtime() is deprecated 错误。客户用的是PHP7.4版本。

PHP 7.4不推荐使用get_magic_quotes_gpc函数替代(PHP 7.4 deprecated get_magic_quotes_gpc function alternative)。

下面我们来看下解决方法。

在/e/class/connect.php 中添加如下代码:

define('MAGIC_QUOTES_GPC',ini_set("magic_quotes_runtime",0)?True:False);

默认修改后的样子,怕有小朋友不会弄,故贴出来

 

<?php
error_reporting(E_ALL ^ E_NOTICE);

define('InEmpireCMS',TRUE);
define('ECMS_PATH',substr(dirname(FILE),0,-7));
define('MAGIC_QUOTES_GPC',ini_set("magic_quotes_runtime",0)?True:False);
//define('MAGIC_QUOTES_GPC',function_exists('get_magic_quotes_gpc')&&get_magic_quotes_gpc()); //旧版本使用7.2没有问题
define('STR_IREPLACE',function_exists('str_ireplace'));
define('ECMS_PNO',EcmsGetProgramNo());

拓展:

magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“ ”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。5.4.0    始终返回 FALSE,因为这个魔术引号功能已经从 PHP 中移除了。

下面给出一个兼容各个php版本的示例:

<?php
// 如果启用了魔术引号
echo $_POST['lastname'];             // O\'reilly
echo addslashes($_POST['lastname']); // O\\\'reilly
// 适用各个 PHP 版本的用法
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}
// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);
echo $lastname; // O\'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>

接下来解决帝国cms升级后白屏的问题,帝国cms7.5切换成php7.x环境时登陆后台空白而且会有php报错,处理方法如下:

对于php7.x,帝国CMS有官方说明:

使用PHP7.*运行环境时,以下两种情况,设置支持PHP7.*操作步骤:
1、全新安装帝国CMS时:
只需安装时“MYSQL接口类型”选择“mysqli”即可支持PHP7系列。

2、已经安装好帝国CMS换PHP7.*运行环境时:
只需修改配置文件“/e/config/config.php”将“$ecms_config[‘db’][‘usedb’]=’mysql’;”修改为“$ecms_config[‘db’][‘usedb’]=’mysqli’;”即可支持PHP7系列。(注意事项:UTF8文件不能用记事本修改文件,否则会将文件转为GBK编码,推荐用Dreamweaver修改。)

3、php.ini配置问题,按下面修改即可解决:(记得改完重启环境)
修改php.ini,把error_reporting = E_ALL改成
error_reporting = E_ALL & ~E_NOTICE

4、如果修改上述不能解决问题,报错依旧。请继续修改PHP.ini文件 把display_errors = ON改成display_errors = Off即可了!

如果服务器是宝塔环境,上面的第3和第4直接按如下步骤修改即可:
1、面板首页 >> 软件商店 >> 已安装 >> php7.x后面的设置 >> 配修改 >> 修改“error_reporting”和“display_errors”;
2、完成