Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Php Google应用程序引擎上Codeigniter站点的路由_Php_Codeigniter_Google App Engine_Routing - Fatal编程技术网

Php Google应用程序引擎上Codeigniter站点的路由

Php Google应用程序引擎上Codeigniter站点的路由,php,codeigniter,google-app-engine,routing,Php,Codeigniter,Google App Engine,Routing,我正在尝试将Codeigniter站点部署到谷歌应用程序引擎PHP7。该站点包含一个联系人表单插件,该插件位于应用程序文件夹外的数据文件夹中,如下所示: Root --application --data --css --js --system 当我从Cloud Shell localhost访问此页面时,它可以完美地加载: https://8080-dot-1234567-dot-devshell.appspot.com/data/contact.php 但在我将此站点部署到Google A

我正在尝试将Codeigniter站点部署到谷歌应用程序引擎PHP7。该站点包含一个联系人表单插件,该插件位于应用程序文件夹外的
数据
文件夹中,如下所示:

Root
--application
--data
--css
--js
--system
当我从Cloud Shell localhost访问此页面时,它可以完美地加载:

https://8080-dot-1234567-dot-devshell.appspot.com/data/contact.php

但在我将此站点部署到Google App Engine并尝试访问该页面后,它返回一个
404未找到
错误:

https://mysite.appspot.com/data/contact.php


有人能解释一下为什么页面可以在本地主机上工作,但在部署到Google App Engine时却不能工作吗?

在这种情况下,
App.yaml
文件的位置至关重要:该文件所在的目录被认为是应用程序的顶级目录。这有两个主要含义:

  • 应用程序所需的所有工件都必须位于此应用程序顶级目录中的某个位置,应用程序部署过程不会在该目录之外查看。我怀疑这是您的情况-如果您的
    app.yaml
    文件位于
    应用程序
    目录内,而
    数据
    目录位于目录外。通过将必要的工件/目录从顶级目录外部符号链接到其内部(请参阅),可以解决这个问题,但这并不适用于所有运行时
  • 访问应用程序中工件的路径需要与应用程序顶级目录相对
某些运行时的开发服务器包括这些检查(使您的应用程序的行为更接近在GAE上部署时的行为),但并非所有运行时都有这些检查(有些甚至没有专用的开发服务器),为实时应用程序和开发应用程序之间的这种差异留出了空间


注意:本文中“应用程序”所指的实际上是GAE服务/模块(对于单个服务应用程序,它们是相同的)。但对于具有多个服务的GAE应用程序,所有这些注意事项都需要应用于每个应用程序服务。可能对这种情况感兴趣:

我没有使用.htaccess文件,因为Google App Engine不支持该文件。好的,删除了注释我发现您描述中项目ID之间的差异很有趣。在第一个应用程序中,您使用了“devshell”,而在另一个应用程序中,您使用了“mysite”。这可能表示您引用的是不同的项目或服务,这意味着可能找不到文件或端点。