php - AWS Elastic Beanstalk - PHP 脚本在部署新版本后无法执行

标签 php amazon-web-services amazon-elastic-beanstalk

我正在使用适用于 PHP 的 AWS Elastic Beanstalk,它通过 Apache Web 服务器管理 1 个 EC2 Linux 服务器。

通过管理控制台部署不同版本(包含所有 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 对象。在不进行任何更改并部署版本后,此脚本不会返回任何内容。有没有办法判断是否发生错误?

顺便说一句,我可以在 Apache 的 application_access_log 中看到对该服务的调用,返回状态为 200。

编辑: 更改网络服务器上的错误级别后,我开始在 application_error_log 中看到有趣的信息:

*[Mon Nov 05 17:19:44 2012] [错误] [客户端 10.210.159.209] PHP fatal error :require_once() [function.require-once]:无法在/var/中重新声明类响应www/html/InstallerLog.php 第 12 行 [2012 年 11 月 5 日星期一 17:19:44] [错误] [客户端 10.210.159.209] PHP 堆栈跟踪: [2012 年 11 月 5 日星期一 17:19:44] [错误] [客户端 10.210.159.209] PHP 1. {main}()/var/www/html/InstallerLog.php:0*

为什么我会收到此错误? 我正在使用:

require_once 'Response.php';

在我的脚本中,据我所知,这种错误不应该发生......

最佳答案

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

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

if(!class_exists('MyNewResponse'))

创建类之前。

关于php - AWS Elastic Beanstalk - PHP 脚本在部署新版本后无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235694/

相关文章:

php - 如何在 MySQL 数据库中存储 PHP 常量

javascript - SyntaxError : JSON. 解析:尝试插入 mysql 时,JSON 数据的第 1 行第 1 列出现意外字符

linux - Aws Ec2 Amazon Linux 上反复出现数据库连接错误

php - 使用codeigniter在数据库中删除和插入多条记录

PHP + 锁定 MySQL 表失败

amazon-web-services - 如何处理 CF 堆栈之外的参数更改?

ruby-on-rails - Rails 5.1.6 AWS Elastic Beanstalk Yarn/Node JS 问题

amazon-web-services - 为什么 Elastic Beanstalk 的 CloudFormation 堆栈 (aws-cdk) 会删除以前的 AppVersion?

amazon-web-services - 使用 AWS Cloud Formation 重复配置 AWS 环境的情况有多常见?

node.js - Elastic Beanstalk 环境变量在 SSH 中丢失