随心播 Server inner error, Regist fail!

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


测试,解决问题!!!


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




原文链接: 随心播 Server inner error, Regist fail! 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( http://gyarmy.com/post-291.html )

发表评论

0则评论给“随心播 Server inner error, Regist fail!”