php - 在 AWS Elastic Beanstalk 上运行的 Symfony 4

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

我最近在 Symfony 4 中完成了一个 API,我想将它部署在 AWS 的 Elastic Beanstalk 上进行生产测试。然而,除了能够在 index.php Symfony default page 中访问默认的 Symfony 4 问候语之外。

我无法路由到任何其他逻辑。例如,当尝试使用适用于本地环境的/note/view 时 note/view on local

我在 EB 环境中遇到“ undefined index /注释/ View 不存在”。几乎就像我的 routes.yaml 没有加载一样。

如有任何建议,我们将不胜感激!提前致谢!

最佳答案

确保您的 public 目录中有 .htaccess 文件(至少在您的 EC2 实例上 - EB 创建的实例 -)

您的本地可能不需要它(如 nginx),但是,EB PHP 随 apache 开箱即用。您需要确保您的代码也适用于 apache。

只是为了验证这个理论,访问由 EB 创建的 EC2 实例(如果您不知道如何操作,请参见下文);

  • cd/var/app/current/public

  • ~ nano .htaccess

  • 将以下内容粘贴到文件中;

`

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>

请注意,这只是 apache 的基本重写以测试该理论。您可以根据项目的需要向该文件中添加更多内容。

  • 重启apache; sudo service httpd restart
  • 测试一下!

或者,除了 cd/var/app/current/public,您还可以执行 cd/var/www/html/public,因为它是 的符号链接(symbolic link)>/var/app/current/public

如何访问 EB 生成的 EC2 实例

  • 转到 AWS 控制台 -> Elastic Beanstalk -> 您的应用程序 -> 您的环境
  • 进入环境仪表板后,点击左侧的“配置”
  • 找到“安全”框并单击“修改”。
  • 在“虚拟机权限”下选择您的“EC2 key 对”并保存。
  • 转到 EC2 -> Instances 并找到您的 EC2 实例的公共(public) DNS (IPv4) 并使用它来访问您的 EC2 key 对(pem 文件)

您需要稍等片刻才能登录。

PS 当然,EBS 背后的主要思想之一是您不需要通过 SSH 连接到您的实例。然而,这只是为了测试理论,有时对于 AWS,您需要采用跟踪和错误的方式。我不知道此应用程序的设置,也不知道 EBS 的整个设置及其工作流程。如果这要解决您的问题,您只需将 .htaccess 包含到您的项目中就可以了。

关于php - 在 AWS Elastic Beanstalk 上运行的 Symfony 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722596/

相关文章:

php - 直接从 Rackspace 云文件 'object' 调整图像大小而无需下载?

php 如果条件在官方有分配?地点

php - 选中复选框时隐藏表格行

amazon-web-services - 认知 : Federated Identity Id and User Attributes

api - 无法删除订阅者 aweber api php 包装器

php - 在 PHP 中缓存 JSON 输出

node.js - AWS EB 实例崩溃时会自动重启吗?

amazon-web-services - AWS EFS 的访问点

api - Dark Sky API 替换推荐?

python - Django : Passing api's json to template for use in a table