谷歌应用程序引擎php';要求'';没有按预期工作


Google app engine php 'require'' not working as expected

所以我在本地机器上使用谷歌应用程序引擎启动器进行开发,在那里一切都正常,然后我上传了它,它突然停止了工作。这是我所说的代码:

包括/require_login.php:

<?php
session_start();
if (!isset($_SESSION["username"]) or !isset($_SESSION["userId"])) {
    require "/templates/login.htm"; //This works locally
    exit();
}
?>

submitlink.php:

<?php
    require "includes/require_login.php";
    require "templates/submitlink.htm"
?>

require_login.php中的require不起作用,但输出以下错误:

Warning: require(/templates/login.htm): failed to open stream: No such file or directory in /base/data/home/apps/e~seminarfach-abi-links/1.388897696415952665/includes/require_login.php on line 4 Fatal error: require(): Failed opening required '/templates/login.htm' (include_path='.;/base/data/home/apps/e~seminarfach-abi-links/1.388897696415952665/;/base/data/home/runtimes/php/sdk') in /base/data/home/apps/e~seminarfach-abi-links/1.388897696415952665/includes/require_login.php on line 4

我还尝试了以下选项,所有这些都导致了这个错误(我认为):

require "../templates/login.htm"; //This dosen't work on my local maschine.
require "/../templates/login.htm"; //This works locally

只是要明确一点:require_login.php文件位于一个名为includes的文件夹中。它试图打开一个名为login.htm的文件,该文件位于一个模板文件夹中,该文件夹的文件夹不在includes文件夹内,但与includes文件夹位于同一级别。

我会执行以下操作:

require __DIR__."/../templates/login.htm";

您不希望有前导/,因为它指向文件系统的根目录。如果不包括__DIR__,那么php将根据初始请求首先访问的文件进行搜索。