首先感谢[鸟哥](http://weibo.com/laruence),解决这个问题!这里做个简单的总结。
### 问题
在阿里云服务器上,安装了最新版本的yar和yii,上传了项目代码,但是调用yar封装的接口时,始终提示错误。
~~~
curl exec failed 'Server returned nothing (no headers, no data)'
~~~
### 分析
查看错误日志,发现这样的问题。
~~~
GET /path/to/url HTTP/1.1" 500 16933 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
~~~
服务器的500错误,再检查server的日志,httpd下的error_log。
~~~
[Thu Jan 02 14:08:22 2014] [notice] child pid 29414 exit signal Segmentation fault (11)
~~~
发现的情况是这样的。
服务器没有打开coredump,所以暂时还没有core产生。
### 解决
然后,经过鸟哥4个小时的排查错误,发现,这是由于php5.3.3的bug导致的。
gdb作为测试工具,测试脚本。
修改了yii框架的代码。
~~~
/framework/web/actions/CInlineAction.php
~~~
原来是这样的
~~~
public function runWithParams($params)
{
$methodName='action'.$this->getId();
$controller=$this->getController();
$method=new ReflectionMethod($controller, $methodName);
if($method->getNumberOfParameters()>0)
return $this->runWithParamsInternal($controller, $method, $params);
else
return $controller->$methodName();
}
~~~
修改后
~~~
public function runWithParams($params)
{
$methodName='action'.$this->getId();
$controller=$this->getController();
$method=new ReflectionMethod($controller, $methodName);
if($method->getNumberOfParameters()>0)
$ret = $this->runWithParamsInternal($controller, $method, $params);
else
$ret = $controller->$methodName();
return $ret;
}
~~~
这样就ok啦。
### 后记
鸟哥对自己的作品负责的态度真是佩服,连夜为我们测试,十分感动,谢谢鸟哥的帮助。
对于自己的知识体系来说,在linux上的测试环节和管理都是不熟悉的,一定会把这部分缺口补齐的!
加了个油!![奋斗](https://box.kancloud.cn/2016-02-17_56c446a99dec4.gif)
- 前言
- php编写RSS源
- PHP编写rss源(续)
- ubuntu 上给PHP安装扩展 Msgpack 和 Yar
- PHPCMS广告模块详细分析——广告的生成
- Yii配合Yar在php5.3.3环境下的错误以及解决方案
- 【Yaf】Yaf的环境安装遇到的问题以及解决方案
- 【PHP扩展】centos给PHP安装扩展
- 【MYSQL】PHPMYADMIN出现的问题以及解决方案
- 【PHP】阿里云升级PHP到5.5详解
- 【phpMyAdmin】修改配置文件连接到其他服务器
- 【PHP】PHP5.4.0版本ChangeLog详解(上)
- 【PHP】编译安装 PHP5.6.13遇到问题以及解决方案
- 【翻译】PHP7——新特性
- 【PHP】数组foreach引发的小问题
- 【CURL】PHP的CURL开发项目最佳实践
- 【PHP】PHP转换图片为ico格式源码
- 【PHP】PHP图像裁剪缩略裁切类源代码及使用方法