2015-10-26 77 views
1

我试图用php的scandir在Google App Engine上读取一个目录。文件夹'img'中的文件肯定是可以访问的,但我试图获取文件夹中所有文件的列表。 有什么问题?在GAE上用PHP读取一个目录

所有文件显然上传正确,所以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)犯规帮助的。

这里是我的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:真

+0

在'.yaml'文件中使用'static_dir'处理程序处理'img'目录中的文件吗? –

+0

是的(我编辑了这个问题) – bogus

回答

0

the documentation

application_read能够

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

尝试将application_readable标志添加到img处理程序。我不是100%确定该国旗是否也会覆盖img目录本身以及其内容。值得一试。

+0

谢谢,这个伎俩。 – bogus