2012-11-05 45 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')) 

創建類之前。

相關問題