流沙团
随心播 Server inner error, Regist fail!
2017-11-1 流沙团


0x001 项目背景



最近在制作一个手机直播平台, 使用的是腾讯云的 随心播系统。 在本地ubuntu 中测试的时候,配置好参数(腾讯的参数配置,挺蛋疼的,自己尝试了一天,才把所有的参数配置搞定)手机端测试也正常, 后来换到阿里那边的 ubuntu系统, 就开始莫名其妙起来了。挺折腾的, 随心播的 调试不是一般的蛋疼!!







0x002 报错分析一



报答代码:



Server inner error, Regist fail!



跟踪调试,php代码,定位到一行代码



$result = $stmt->execute();



这段代码执行失败 导致的



stmt是pdo的对象, 服务器是 lnmp 的环境配置, 支持pdo



推荐文章(pdo捕获错误):



http://blog.csdn.net/qq_28602957/article/details/51037644







关键代码






$dbms='mysql';//数据库类型  
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="insert into user (username,password) values('admin')";//需要执行的sql语句
$res=$pdo->prepare($query);
$res->execute();
$code=$res->errorCode();
echo $code.'<br>';
if($code==00000){//如果没有任何错误, errorCode() 返回的是: 00000 ,否则就会返回一些错误代码
echo "数据添加成功";
}else{
echo "数据库错误:<br>";
echo 'SQL Query:'.$query;
echo '<pre>';
var_dump($res->errorInfo());
echo '<pre>';
}

有用的代码只是










$code=$stmt->errorCode();  

var_dump( $stmt);

echo "<br/>";

var_dump( $code);

echo "<br/>";

 var_dump($stmt->errorInfo());  

exit; 



找到具体的报错信息







提示我 pwd 为 null



我明明传了pwd 的。







0x003 报错分析二



这时候,就需要向上推了, 







可以代码:






// 加密密码
$cmd = "echo $this->pwd | base64";
$pwd = '';
exec($cmd, $pwd, $ret);






测试这里,输出的 $pwd 为空







原因就是 exec 执行失败



看了看 phpinfo() 中的信息, exec 被 disable了







0x004 解决



 find / -name "php.ini"



找到 php.ini 的位置



删除 disable中 exec 和 shell_exec







测试,解决问题!!!







总结: 蛋疼的 随心播的调试!!!













发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容