【问题标题】:GAE dont run composer after deploy部署后 GAE 不运行作曲家
【发布时间】:2019-03-24 20:55:07
【问题描述】:

我在 php 上为 GAE 开发了一个简单的应用程序。 在本地环境中一切正常,但在“gcloud app deploy”之后出现关于 autoload.php 的错误 - 没有这样的文件或目录。 我只使用作曲家来自动加载我的类——而不是外部依赖。 GAE 标准,项目无需计费

我在本地做什么:

composer install 
dev_appserver.py app.test.yaml

应用程序运行良好。

但部署后:

PHP Fatal error:  require_once(): Failed opening required '/base/data/home/apps/***/vendor/autoload.php' (include_path='.;/base/data/home/apps/***/;/base/alloc/tmpfs/dynamic_runtimes/php55_dynamic/fc2f1b4915ea2bca/sdk') in /base/data/home/apps/***/webhook.php on line 8

第 8 行:

require_once __DIR__ . '/vendor/autoload.php';

composer.json

{
    "autoload": {
        "psr-4": {
            "Core\\": "Classes/",
            "Telegram\\": "Classes/Telegram",
            "PushEvent\\": "Classes/PushEvent"
        }
    }
}

所以现在我从 .gcloudignore 中删除了供应商 - 并且应用程序正在 GAE 上运行,但这让我感到难过 :(

【问题讨论】:

    标签: google-app-engine composer-php google-app-engine-php


    【解决方案1】:

    您可以明确告诉 GAE 运行 composer installcomposer dump-autoload

    {
        "scripts": {
            "gcp-build": [
                "composer install"
            ]
        }
    }
    

    提示1:GAE 会缓存安装文件,有时您可能不想使用它:gcloud beta app deploy --no-cache]

    提示2:我建议您在 app.yaml 中更改应用程序的文档根目录,以免将供应商目录暴露给外界。

    runtime_config:
      document_root: public
    

    目录结构:

    src
     - OtherFolder //PSR-4
        - ClassA.php 
    public
     - index.php
    vendor
     - autoload.php
     - ...
    compose.json
    app.yaml
    

    require 必须引用父文件夹

    require_once __DIR__ . '/../vendor/autoload.php';
    

    而 composer.json 只需要一个 psr4 条目

    {
        "autoload": {
            "psr-4": {
                "MyApp\\": "src/"
            }
        }
    }
    

    【讨论】:

    • 我用你的脚本创建了 package.json 文件,但仍然有 requre 错误:(
    • 真的吗? @Maksim 你能把你的代码放在github上和我分享吗?
    • 我找到了!在 php55 运行时作曲家不起作用 - 仅适用于 php72。
    • document_root 不应该是公开的,而不是 src 吗?
    猜你喜欢
    • 2021-06-11
    • 2017-12-28
    • 2018-04-22
    • 2014-01-26
    • 2015-03-22
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多