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上的测试环节和管理都是不熟悉的,一定会把这部分缺口补齐的!

加了个油! 奋斗




目录
相关文章
|
4月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
1月前
|
SQL 安全 JavaScript
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中确保 PHP Shell 安全,需采取限制执行环境、禁用危险函数、使用安全模式、采用 `suPHP` 或 `PHP-FPM`、使用参数化查询、输入验证、转义命令、强化会话管理、合理配置错误处理、正确设置文件权限及定期更新等措施。这些策略有助于防范潜在的安全威胁。
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
46 5
|
6月前
|
SQL 存储 安全
PHP 与现代 Web 应用的安全挑战与解决方案
随着 Web 应用的发展,PHP 作为一种广泛使用的服务器端脚本语言,面临着越来越复杂的安全挑战。本文探讨了当前 PHP 开发中常见的安全问题,并提供了相应的解决方案,帮助开发者构建更安全可靠的 Web 应用。 【7月更文挑战第8天】
87 1
|
4月前
|
SQL 安全 JavaScript
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中,如何确保 PHP Shell 的安全性?
|
5月前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
65 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
3月前
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
49 0
|
5月前
|
Web App开发 关系型数据库 PHP
使用 Docker 快速搭建多版本 PHP 开发环境
使用 Docker 快速搭建多版本 PHP 开发环境
103 2
|
5月前
|
应用服务中间件 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 错误的解决方法
|
5月前
|
Linux PHP
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?