程序升级触发阿里云自身安全机制导致的莫名问题
最近对放在阿里云的程序作了升级,但在升级的时候却出现了一个莫名其妙的问题,导致整个应用无法使用。这是一个ecshop的程序,程序升级完以后出现莫名其妙的语法错误。然而程序本地测试并无问题。
报错异常
Parse error: syntax error, unexpected T_IF in /www/web/includes/lib_main.php on line 1
用securecrt登陆进去,set number居然报错。没辙,将文件栽下来,查看了下lib_main.php
<?php/** * ECSHOP 前台公用函数库 * ============================================================================ * 版权所有 2005-2010 上海商派网络科技有限公司,并保留所有权利。 * 网站地址: http://www.ecshop.com; * ---------------------------------------------------------------------------- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和 * 使用;不允许对程序代码以任何形式任何目的的再发布。 * ============================================================================ * $Author: liuhui $ * $Id: lib_main.php 17063 2010-03-25 06:35:46Z liuhui $*/if (!defined('IN_ECS')){ die('Hacking attempt');}/** * * 给用户分配业务员 * @access public * @param int user_id 用户id * @return void * */function assgin_user($user_id = 0){ if (0 == intval($user_id)) { return false; } $sql = "SELECT seller FROM ".$GLOBALS['ecs']->table('users'). " AS u WHERE u.user_id = '$user_id'"; $seller_id = $GLOBALS['db']->getOne($sql); if(0 !== intval($seller_id)){ return false;//用户已分配 } $sql_admin = "SELECT user_id, cur_assign FROM " .$GLOBALS['ecs']->table('admin_user'). " WHERE if_assign = 1 ORDER BY user_id ASC"; $all_seller = $GLOBALS['db']->getAll($sql_admin); $cur_seller = 0;//当前分配业务员id $last_seller = 0;//上次分配业务员id $cnt_seller = count($all_seller); for($i = 0; $i < $cnt_seller; $i++){ if(1 == $all_seller[$i]['cur_assign']){ $last_seller = $all_seller[$i]['user_id']; $assign_key = ($i == $cnt_seller - 1) ? 0 : $i + 1;//获取下一个未分配的客户id $cur_seller = $all_seller[$assign_key]['user_id']; break; } } //未分配成功时从第一个开始分配 if(0 == $cur_seller && $cnt_seller > 0){ $cur_seller = $all_seller[0]['user_id']; } //更新用户隶属于的业务员 $sql = "UPDATE " . $GLOBALS['ecs']->table('users') . " SET seller='$cur_seller' WHERE user_id='$user_id'"; $GLOBALS['db']->query($sql); //更新当前分配的业务员 $sql = "UPDATE " . $GLOBALS['ecs']->table('admin_user') . " SET cur_assign=1 WHERE user_id='$cur_seller'"; $GLOBALS['db']->query($sql); //更新上次分配的业务员 $sql = "UPDATE " . $GLOBALS['ecs']->table('admin_user') . " SET cur_assign=0 WHERE user_id='$last_seller'"; $GLOBALS['db']->query($sql); return true;}/** * 更新用户SESSION,COOKIE及登录时间、登录次数。 * * @access public * @return void */function update_user_info(){ if (!$_SESSION['user_id']) { return false; } /* 查询会员信息 */ $time = date('Y-m-d'); $sql = 'SELECT u.user_money, u.pay_points, u.user_rank, u.rank_points, '. ' IFNULL(b.type_money, 0) AS user_bonus, u.last_login, u.last_ip'. ' FROM ' .$GLOBALS['ecs']->table('users'). ' AS u ' . ' LEFT JOIN ' .$GLOBALS['ecs']->table('user_bonus'). ' AS ub'. ' ON ub.user_id = u.user_id AND ub.used_time = 0 ' . ' LEFT JOIN ' .$GLOBALS['ecs']->table('bonus_type'). ' AS b'. " ON b.type_id = ub.bonus_type_id AND b.use_start_date <= '$time' AND b.use_end_date >= '$time' ". " WHERE u.user_id = '$_SESSION[user_id]'"; if ($row = $GLOBALS['db']->getRow($sql)) { /* 更新SESSION */ $_SESSION['last_time'] = $row['last_login']; $_SESSION['last_ip'] = $row['last_ip']; $_SESSION['login_fail'] = 0; /* 取得用户等级和折扣 */ if ($row['user_rank'] == 0) { // 非特殊等级,根据等级积分计算用户等级(注意:不包括特殊等级)
变成了一坨这样的东西。一开始以为是自己的程序问题,备份后再次上传,仍然如此。。。。。因此,怀疑是上传的文件触发了阿里云的安全机制。有些文件时正常的,有些文件会莫名地把换行符给干掉。
于是将文件打包成一个压缩包以后再上传,这时完好如初。。。。。
扫描公众号,关注更多信息
---------------------------------------------------------------------------------我是分割线--------------------------------------------------------------------------to be a better me, talk is cheap show me the code
版权所有,转载请注明原文链接。
文中有不妥或者错误的地方还望指出,以免误人子弟。如果觉得本文对你有所帮助不妨【推荐】一下!如果你有更好的建议,可以给我留言讨论,共同进步!
再次感谢您耐心的读完本篇文章。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------