App Engine PHP - dev_appserver可以工作,但appspot没有

时间:2017-11-11 01:33:57

标签: php google-app-engine gcloud

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

项目结构

  1. app.yaml位于root中,根目录中还有/www目录
  2. inside /www dir是所有php文件和/www/assets目录
  3. /www/assets包含所有静态文件。
  4. 配置文件

    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,无法找到此页面"。

1 个答案:

答案 0 :(得分:0)

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

您应该只使用/www/assets配置static_files(最后一个,与static_files网址格式不匹配)并保留Google {{{{{{{{ 3}}:

.php

或者你可以只能使用- url: / script: www/index.php # Serve php scripts. - url: /(.+\.php)$ script: www/\1 - url: /(.*) static_files: www/assets/\1 upload: www/assets/(.*) 选项(example表中的第一行):

  

<强> application_readable

     

可选。布尔。默认情况下,在静态文件处理程序中声明的文件   作为静态数据上传,仅供最终用户使用。他们   应用程序无法读取。如果此字段设置为true,则   文件也作为代码数据上传,以便您的应用程序可以阅读   他们。这两个上传都是根据您的代码和静态数据收取的   存储Handlers element

像这样:

application_readable

就个人而言,我发现第一种方法更清洁。