在GAE上用PHP读取目录


Reading a directory with PHP on GAE

我正试图在谷歌应用引擎上用php的scandir读取一个目录。文件夹"img"中的文件肯定是可以访问的,但我正在尝试获取该文件夹中所有文件的列表。怎么了?

所有文件显然都上传正确,所以app.yaml应该没问题。是PHP错误还是GAE限制?

这是我的主要php脚本,在访问我的网站的/:时运行

   <?php
    $dir = 'img';
    if (is_dir($dir)) {
        //this code is never reached:
        echo "directory exists :-)";
        $filenames = scandir($dir, 0);
        print_r($filesnames);
    } else {
        echo "No such directory";
    }
    // this works:
    echo "<div>
        <img src='"/img/example.png'">
    </div>";
    // this works:
    $files1 = scandir(getcwd());
    print_r($files1);
    ?>

opendir($dir)也没有帮助。

这是我的应用程序

application: mypage
version: 1
runtime: php55
api_version: 1
handlers:
# image files
- url: /img/(.*'.(bmp|gif|ico|jpeg|jpg|png))
  static_files: img/'1
  upload: img/(.*'.(bmp|gif|ico|jpeg|jpg|png))
- url: /.*
  script: helloworld.php
# this is probably redundant:
- url: /img
  static_dir: img

编辑:将这一行添加到图像文件部分(不一定是img文件夹)解决了问题:application_readable:真正的

来自文档:

应用程序可读

可选。默认情况下,在静态文件处理程序中声明的文件是作为静态数据上传,并且只提供给最终用户,他们不能被应用程序读取。如果此字段设置为true,则文件为也作为代码数据上传,以便您的应用程序可以读取它们。二者都上传将根据您的代码和静态数据存储资源收费配额。

尝试将application_readable标志添加到img处理程序中。我不能100%确定该标志除了内容之外是否还会覆盖img目录本身。值得一试。