【发布时间】:2019-12-11 06:56:05
【问题描述】:
我有一个包含大约 30 个文件和 4 个文件夹的 PHP 项目。 有没有办法将其上传到 App Engine。我的意思是,当我配置 YAML 时,它只上传 index.php 而没有其他内容。
我应该以某种方式将文件上传到 GS 并使用 YAML 指向这些文件吗?
【问题讨论】:
标签: php google-app-engine
我有一个包含大约 30 个文件和 4 个文件夹的 PHP 项目。 有没有办法将其上传到 App Engine。我的意思是,当我配置 YAML 时,它只上传 index.php 而没有其他内容。
我应该以某种方式将文件上传到 GS 并使用 YAML 指向这些文件吗?
【问题讨论】:
标签: php google-app-engine
嗯,答案是“是”,您必须将您的应用程序指向您存储所有文件的 GS。
这是一个示例 YAML 文件,它指向包含 PHP 文件的子目录。
runtime: php
# api_version: 1
env: flex
runtime_config:
document_root: .
env_variables:
APP_LOG: errorlog
GOOGLE_STORAGE_BUCKET: "URL.appspot.com/public_html"
MYSQL_USER: "NAME"
MYSQL_PASSWORD: "USER"
MYSQL_DSN: "mysql:dbname=DBNAME;unix_socket=/cloudsql/LOCATION"
beta_settings:
cloud_sql_instances: "LOCATION"
【讨论】:
静态内容可以从 Google Cloud Storage (GCS) 或直接从 GAE 应用程序环境中提供。 PHP 文件应与您的应用程序一起上传,而不是上传到 GCS。
GAE 灵活documentation 包括对每种方法的讨论以及从 GCS 提供静态内容的入门指南。
在标准环境中,您必须define handlers 提供静态内容并将它们映射到项目目录结构中保存文件的目录。例如:
handlers:
# All URLs beginning with /stylesheets are treated as paths to
# static files in the stylesheets/ directory.
- url: /stylesheets
static_dir: stylesheets
除非包含在您的 .gcloudignore 文件中,否则您的应用程序目录中的所有 PHP 文件都将被上传。默认情况下 vendor/ 文件夹 is included there 并因此被忽略,但这是因为它假定 Composer 将在部署后安装必要的包。
在灵活的环境中,document_root(在您的app.yaml 中指定)下的任何内容都可以由您的应用程序提供服务。除非在 app.yaml 的 skip_files 元素下指定,否则您的应用程序目录中的 PHP 文件将被上传到应用程序环境。
【讨论】: