Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Neos CMS的AWS Lambda的bref.sh php容器_Php_Neoscms_Bref_Aws Lambda Containers - Fatal编程技术网

带有Neos CMS的AWS Lambda的bref.sh php容器

带有Neos CMS的AWS Lambda的bref.sh php容器,php,neoscms,bref,aws-lambda-containers,Php,Neoscms,Bref,Aws Lambda Containers,我正在努力让Neos(基于php的cms)在AWS Lambda的docker容器中运行。 我想我有个误会,希望有人能帮我 到目前为止我所做的: 我调整了Neos,以便将所有缓存文件写入tmp文件夹 我将bref和额外的php扩展包添加到composer.json中 我创建了一个docker文件,非常简单,如Mattheu Naploli的博客文章所示: 我已经创建了一个cloudformation模板来使用sam本地启动api Dockerfile: FROM bref/php-74-fpm

我正在努力让Neos(基于php的cms)在AWS Lambda的docker容器中运行。 我想我有个误会,希望有人能帮我

到目前为止我所做的:

  • 我调整了Neos,以便将所有缓存文件写入tmp文件夹
  • 我将bref和额外的php扩展包添加到composer.json中
  • 我创建了一个docker文件,非常简单,如Mattheu Naploli的博客文章所示:
  • 我已经创建了一个cloudformation模板来使用
    sam本地启动api
  • Dockerfile:

    FROM bref/php-74-fpm
    
    COPY . /var/task
    
    # Start Bref's runtime client
    CMD _HANDLER=Web/index.php /opt/bootstrap
    
    template.yml

    AWSTemplateFormatVersion: '2010-09-09'
    Transform: AWS::Serverless-2016-10-31
    Description: >
      neos-demo-lambda
    
      Sample SAM Template for neos-demo-lambda
    
    # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
    Globals:
      Function:
        Timeout: 3
    
    Resources:
      Neos:
        Type: AWS::Serverless::Function
        Properties:
          Description: Show neos demo
          PackageType: Image
          ImageUri: neos7.demo.lambda.php74:latest
          #Handler: "Web/index.php /opt/bootstrap"
          #Handler: "Web/index.php"
          MemorySize: 1024
          Timeout: 360
          Environment:
            Variables:
              FLOW_CONTEXT: 'Production'
              FLOW_PATH_TEMPORARY_BASE: '/tmp/neos'
              FLOW_PATH_DATA_BASE: '/tmp/Data'
              BREF_AUTOLOAD_PATH: '/var/task/Packages/Libraries/autoload.php'
              AWS_S3_BUCKET_STORAGE: 'neos-lambda-demo-private'
              AWS_S3_BUCKET_TARGET: 'neos-lambda-demo-public'
              AWS_CLOUDFRONT_BASE_URI: ''
              AWS_REDIS_HOST: ''
    
          Events:
            htmlHttpApi:
              Type: HttpApi
              TimeoutInMillis: 28000
    
        Metadata:
          DockerTag: neos7.lambda.demo
          DockerContext: ./Web/index.php
          Dockerfile: Dockerfile
    
    sam本地启动api的响应:

    entrypoint requires the handler name to be the first argument
    time="2021-04-14T22:11:48.093" level=error msg="Init failed" InvokeID= error="Runtime exited with error: exit status 142"
    time="2021-04-14T22:11:48.093" level=error msg="INIT DONE failed: Runtime.ExitError"
    Invalid lambda response received: Lambda response must be valid json
    2021-04-15 00:11:48 127.0.0.1 - - [15/Apr/2021 00:11:48] "GET / HTTP/1.1" 502 -
    
    我不明白的是,我希望总是会返回一个有效的json,即使php提供了一个5xx错误。 我迷路了。。。即使情况并非如此,我如何调试该问题

    最后,我必须创建自己的docker映像,因为Neos太大,无法使用bref层,我需要一些php扩展。 如果我能理解当前的问题,我可以解决这个问题,并为每个人提供一个工作容器

    我还有几个问题,在这个场景中,如果我有一个web应用程序和一个容器,我是否必须用composer安装bref包?这在博客文章中并不清楚。另外,我是否必须在serverless/sam中设置处理程序,如果是,那么哪个字符串是正确的,因为
    Web/index.php
    是Neos中的路径

    总的来说,近地天体在AWS中的工作非常出色。 我的设置是:

  • CloudFront具有从S3到lambda的静态文件的行为
  • Redis存储近地天体的缓存文件
  • ElasticSearch用于网站搜索,提高了大型网站的性能
  • 一旦这起作用,我将为近地天体社区免费发布所有信息,以使其发挥作用

    希望有人能帮忙

    谢谢大家!

    你能试试这个吗:

    FROM bref/php-74-fpm
    
    # Include any extension you want, for example:
    #COPY --from=bref/extra-gd-php-74:0.9.5 /opt /opt
    
    ADD . $LAMBDA_TASK_ROOT
    
    CMD [ "index.php" ]
    
    自文章发表以来,格式已经简化(请参阅)。

    您能试试以下方法吗:

    FROM bref/php-74-fpm
    
    # Include any extension you want, for example:
    #COPY --from=bref/extra-gd-php-74:0.9.5 /opt /opt
    
    ADD . $LAMBDA_TASK_ROOT
    
    CMD [ "index.php" ]
    

    自文章发表以来,格式已经简化(请参阅)。

    谢谢,我又向前迈进了一步!但是现在得到一个fpm错误:警报:[池默认值]用户尚未定义,错误:未能对配置进行后期处理,错误:启动PHP-fpm时fpm初始化失败错误致命错误:异常:PHP-fpm无法启动谢谢,我更进一步!但是现在得到一个fpm错误:警报:[池默认值]用户尚未定义,错误:未能对配置进行后期处理,错误:启动PHP-fpm时fpm初始化失败错误致命错误:异常:PHP-fpm启动失败