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

简介: 首先感谢鸟哥,解决这个问题!这里做个简单的总结。 问题 在阿里云服务器上,安装了最新版本的yar和yii,上传了项目代码,但是调用yar封装的接口时,始终提示错误。 curl exec failed 'Server returned nothing (no headers, no data)'分析 查看错误日志,发现这样的问题。


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


问题

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

加了个油! 奋斗




目录
相关文章
|
9月前
|
关系型数据库 MySQL PHP
利用PhpStorm、phpstudy和xdebug快速构建PHP调试环境
至此,我们已经完成了PHP调试环境的构建。现在,你可以在PhpStorm中打开你的PHP项目,设置断点,然后开始调试你的代码了。希望这个指南能帮助你快速构建PHP调试环境,提高你的开发效率。
568 26
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
9月前
|
Ubuntu Linux PHP
利用PHP压缩音频:Linux环境下的ffmpeg简易安装指南
希望这个指南能为你的编程之旅提供帮助。只需记住,每一行代码都像音乐的音符,组合在一起,创造出美妙的旋律。祝你编程愉快!
305 6
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
277 5
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
219 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
SQL 安全 JavaScript
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中,如何确保 PHP Shell 的安全性?
153 1
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
286 0
|
Web App开发 关系型数据库 PHP
使用 Docker 快速搭建多版本 PHP 开发环境
使用 Docker 快速搭建多版本 PHP 开发环境
395 2
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
321 0