Yii配合Yar在php5.3.3环境下的错误以及解决方案

首先感谢鸟哥,解决这个问题!这里做个简单的总结。

问题

在阿里云服务器上,安装了最新版本的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上的测试环节和管理都是不熟悉的,一定会把这部分缺口补齐的!

加了个油!

时间: 2024-11-02 17:34:09

Yii配合Yar在php5.3.3环境下的错误以及解决方案的相关文章

多重环境下web.config配置管理解决方案

面临的问题 在大型web应用开发中,为了保证应用的质量,保证用户 体验,我们开发时总要经历从开发,测试,beta到最终上线的过程. 因为不同的测试运行环境的参数都不同,所以在实际开发中我们可以 编写多个web.config,每个web.config特定用于某个测试运行环境.这一切看上 去似乎顺理成章,但随着你的应用越做越大,web.config也会越来越大,而麻烦 也会随之而来. 复杂的web.config是很难进行维护的,而且牵一发动全 身.比如你开发时有一个配置节要进行修改,那所有环境下的w

Linux环境下段错误的产生原因及调试方法小结

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的"段错误"(Segmentation Fault).借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决. 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个

Linux环境下段错误的产生原因及调试方法小结_C 语言

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的"段错误"(Segmentation Fault).借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决. 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个

Sendmail在Unix/Linux环境下554错误的解决方法

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Sendmail 是在 Unix/Linux 环境下十分流行媛的邮件发送服务程序.但是其配置十分繁琐,问题也很多.本文解决了不能发信的一个问题. 问题: 每次发送的邮件都报告: ----- Transcript of session follows ----- 554 5.0.0 MX list for example.com. points back to e

win2003环境下PHP错误提示:Can't create TCP/IP socket (10106)

本人在登陆phpmyadmin时,也遭遇了Can't create TCP/IP socket (10106)的错误,在网站查找了一套堆资料后,还是无果,最后,在自己的排查下,发现了问题所在. 网站的环境是win2003+PHP5,问题出现之前,没有做过任何的修改.突然间访问PHP网站时出现错误提示:Warning: Cannot modify header information - headers already sent by.... 怀疑是不是PHP或MYSQL的问题,通过PHPINFO

虚拟化环境下Power System部署解决方案

在IT技术快速发展的今天,虚拟化技术日趋成熟,由于其在资金节省和IT效率提高上的优势日益明显,越来越多的企业也开始部署虚拟化平台.虚拟化平台中Lpar的数量会随着业务的增长而增加,快速的部署操作系统将成为必须的操作.一般部署一个AIX操作系统大约需要50分钟以上并且需要人为参与的步骤比较多,占用管理员大量的时间和精力.为了提高系统的部署速度和灵活性,本文将针对现有的IBM Power VM虚拟化环境,通过Network Install Manager (以下称为NIM)快速部署AIX系统到各个L

Windows 环境下的PHP5 与 Apache 服务器的配置

apache|php5|window|服务器 目前 PHP5 发布了第三个候选版本,估计正式版本不久就快释放了.安装过程应该不会有所变化,下面文章内容将讲述 Windows2000/XP/2003(不建议在 windows 98 下建立 PHP 环境) 下 PHP 环境的配置,服务器选择 Apache 2.0.49,数据库选择 MySQL 4.0.20 版本. 需要下载几个软件包: 1. PHP5 RC3 2. Apache 2.0.49 3. MySQL 4.0.20 下载软件包1. PHP5

Windows 环境下的 PHP5+Apache+mysql 服务器的配置

    下面文章内容将讲述 Windows2000/XP/2003(不建议在 windows 98 下建立 PHP 环境) 下 PHP 环境的配置,服务器选择 Apache 2.0.54,数据库选择 MySQL 4.1.14 版本. 需要下载几个软件包: 1. PHP 5.1.0RC1 2. Apache 2.0.54 3. MySQL 4.1.14 下载软件包: 1. PHP 5.1.0RC1 PHP 的下载地址为: http://www.php.net/downloads.php ,找到如下

Ubuntu12下编译安装PHP5.3开发环境

 本文给大家分享的是在Ubuntu12下编译安装PHP5.3开发环境的方法和步骤,十分的细致,推荐给大家,有需要的小伙伴们可以参考下.     最近项目遇到一个坑爹的事情,一个源码必须使用PHP5.3,但是现在Ubuntu上自带的版本是5.4,降级之后会出各种奇怪的问题,最后没办法,只能一步步在Ubuntu12.04server上自己编译PHP5.3,比繁琐,共享之. 安装Apache2.2   代码如下: sudo apt-get install apache2 -y   然后安装MySQL5