在GAE上使用PHP读取目录

时间:2015-10-26 21:41:11

标签: php google-app-engine

我试图在Google App Engine上使用php的scandir阅读目录。文件夹中的文件' img'绝对可以访问,但我想获取文件夹中所有文件的列表。 怎么了?

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

这是我的主要php脚本,在访问我的网站' s /:

时运行
   <?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)也没有帮助。

这是我的app.yaml:

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

1 个答案:

答案 0 :(得分:0)

来自the documentation

  

<强> application_readable

     

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

尝试将img标记添加到img处理程序。除了内容之外,我还不能100%确定该标志是否也会覆盖 for i in results { print(i.interface.index) } 目录本身。值得一试。