2012-11-05 116 views
2

我正在使用AWS Elastic Beanstalk for PHP,它使用Apache Web服务器管理1台EC2 linux服务器。AWS Elastic Beanstalk - PHP脚本在部署新版本后无法执行

当通过管理控制台部署不同的版本(带有我所有php脚本的zip文件)时,我有时会遇到奇怪的情况。

在某些情况下,即使我正在部署一个完全相同的脚本,其中有些脚本以前都有效,但其中一些突然不起作用。当再次部署另一个版本(仍然是相同的脚本,相同的内容)时,突然间一切正常。有问题的服务的

实施例:

<?php 
// dynamically loads needed classes 
    function __autoload($class_name) { 
     include $class_name . '.php'; 
    } 
    $response = new Response(); 

    $response->data = array('platform_version' => Configuration::PLATFORM_VERSION); 
    die(json_encode($response)); 
?> 

通常,这脚本返回JSON对象。在没有改变任何东西并且部署版本之后,这个脚本不会返回任何东西有没有办法找到是否发生错误?

BTW,我可以看到在Apache中的application_access_log服务的调用与返回状态200

编辑: 改变Web服务器上的错误级别后,我开始看到的有趣的信息application_error_log:

* [Mon Nov 05 17:19:44 2012] [error] [client 10.210.159.209] PHP致命错误:require_once()[function.require-once]:无法在/ var中重新声明类响应/www/html/InstallerLog.php on line 12 [Mon Nov 05 17:19:44 2012] [错误] [client 10.210.159.209] PHP Stack trace: [error] [client 10.210.159.209] PHP 1. {main}()/ var/www/html/InstallerLog。 php:0 *

为什么我得到这个错误? 我使用:

require_once 'Response.php'; 

在我的脚本,使这种错误不应该为我的知识发生......

+0

我也改变了php.ini文件以显示各种错误 (http://stackoverflow.com/questions/5050426/php-errors-not-being-displayed-in-the-browser-ubuntu- 10-10),仍然没有任何东西(白色屏幕) – nitzan

+1

你有error_reporting吗?你有没有检查你的Apache错误日志? –

回答

3

确定。所以最终它是非常基本的。

发生错误是因为我使用的类名“Response”已在其他地方使用(不在我的代码中,可能在SDK中或类似的地方)。 将名称更改为不太通用的名称后,错误再次发生。 只是为了安全起见,我还增加了:

if(!class_exists('MyNewResponse')) 

创建类之前。

相关问题