【问题标题】:App Engine PHP - dev_appserver works but appspot does notApp Engine PHP - dev_appserver 可以工作,但 apppot 不能
【发布时间】:2017-11-11 01:33:57
【问题描述】:

我的项目是一个基本的 php 网站,只有一小部分 php 用于包含页眉/页脚。

项目结构

  1. app.yaml 位于根目录中,/www 目录也在根目录中
  2. /www 目录里面是所有 php 文件和一个/www/assets 目录
  3. /www/assets 包含所有静态文件。

配置文件

app.yaml 文件是这样构造的:

runtime: php55
api_version: 1

handlers:
- url: /
  script: www/index.php

- url: /about.php
  script: www/about.php

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

担心这不太正确。

我还需要像 php.ini 这样的其他配置文件吗?还是 app.yaml 就足够了?

问题

当我使用 dev_appserver.py . 在本地运行项目时,它运行良好。

但是,当我使用 gcloud app deploy 部署项目时,我得到:

http 错误 404,找不到此页面”。

【问题讨论】:

    标签: php google-app-engine gcloud


    【解决方案1】:

    您可能不想在static_files 中匹配www 本身,因为默认情况下,这意味着来自该位置的.php 文件不会被视为应用程序文件。

    您应该只配置/www/assetsstatic_files(最后一个,与static_files url 模式不匹配)并保留来自谷歌example 的推荐.php 处理程序:

    - url: /
      script: www/index.php
    
    # Serve php scripts.
    - url: /(.+\.php)$
      script: www/\1
    
    - url: /(.*)
      static_files: www/assets/\1
      upload: www/assets/(.*)
    

    或者,您可能可以只使用application_readable 选项(Handlers element 表中的第一行):

    应用程序可读

    可选。布尔值。默认情况下,在静态文件处理程序中声明的文件 作为静态数据上传,仅提供给最终用户。他们 应用程序无法读取。如果该字段设置为 true,则 文件也作为代码数据上传,因此您的应用程序可以读取 他们。两次上传都针对您的代码和静态数据收费 存储resource quotas.

    像这样:

    - url: /
      script: www/index.php
    
    - url: /about.php
      script: www/about.php
    
    - url: /(.*)
      static_files: www/\1
      upload: www/(.*)
      application_readable: true
    

    我个人觉得第一种方法更干净。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 2012-10-24
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多