PHP file_exists功能是否适用于Google App Engine?

时间:2015-04-06 03:41:23

标签: php google-app-engine app.yaml

当我将php文件部署到GAE时,file_exists功能不起作用。如果我使用Google App Engine Launcher从我的计算机本地测试完全相同的代码,它可以正常工作。这是PHP和app.yaml文件

indexTest.php

<?php
DEFINE("TESTFILE", 'testfile.txt');
echo TESTFILE.'<br>';

$doesTheFileExist = file_exists(TESTFILE);
echo '$doesTheFileExist: ' . $doesTheFileExist. '<br>';

if (!file_exists(TESTFILE)) {
  echo 'I guess it doesnt exist';
}

RETURN;

的app.yaml

application: application-name
version: 1
runtime: php55
api_version: 1
threadsafe: true

handlers:

- url: /favicon.ico
  static_files: favicon.ico
  upload: favicon.ico

- url: /google-api-php-client
  script: google-api-php-client

- url: /testfile.txt
  static_files: testfile.txt
  upload: testfile.txt

- url: /
  script: indexTest.php

本地输出

fileexistlocal

GAE上的输出

existfileGAE

为什么在本地测试时会有效,在部署后,它不起作用?

我尝试更改文件的位置并更改 app.yaml 文件,并添加以下内容:

- url: /templates
  static_dir: templates

将文件放在模板目录中。但同样,它适用于本地主机,但未部署到App Engine。

1 个答案:

答案 0 :(得分:3)

如果您希望能够从应用中读取静态资源,则需要在处理程序上设置application_readable标记。

当然,如果您实际上并不希望能够将该文件作为静态资源提供,但只是希望能够将其读取,那么请不要将其包含在您的app.yaml文件中它将被上传并可从您的应用访问。

请参阅文档here