0

我获得的用于显示给定目录的所有文件和子目录文件的功能有问题。它在本地工作,但是当我上传它时,页面只是给出了 500 错误。

我已经尝试 chmod'ing 到 777,甚至是它搜索的整个目录,但似乎没有任何效果。任何帮助表示赞赏!

<?php

$directory = '../..';
$files = listFiles($directory, 'start.js');

echo json_encode($files);

function listFiles($dir, $origin) {
    $directory = scandir($dir);
    $files = [];

    foreach($directory as $file){
        if($file != '.' && $file != '..') {
            $thisFile = $dir . '/' . $file;

            if(is_dir($thisFile)) {
                $files = array_merge($files, listFiles($thisFile, $origin));
            }else{
                $tempDir = str_replace('../..', '/game', $thisFile);
                $extension = substr(strrchr($thisFile, '.'), 1);

                if($extension == 'js' && strpos($thisFile, $origin) === false) $files[] = $tempDir;
            }
        }
    }

    return $files;
}
4

3 回答 3

3

语法:

$files = [];

仅适用于某个 P​​HP 版本(我认为是 5.4)。检查服务器是否与您的开发环境具有相同的版本。

于 2013-07-30T15:03:11.860 回答
2

首先使用以下 PHP 代码启用错误报告:

 ini_set('display_errors','On');
 error_reporting(E_ALL);

其次,检查语法错误或其他内容。就像以前的评论者所说的语法..

$files = [];

..仅适用于某个 P​​HP 版本(我认为是 5.4)。检查服务器是否与您的开发环境具有相同的版本。

于 2013-07-30T15:19:41.340 回答
0

在我的本地主机上测试:

<?php

    $directory = '../..';
    $files = listFiles($directory, 'start.js');

    echo json_encode($files);

    function listFiles($dir, $origin) {
        $directory = scandir($dir);
        $files = array();

        foreach($directory as $file){
            if($file != '.' && $file != '..') {
                $thisFile = $dir . '/' . $file;

                if(is_dir($thisFile)) {
                    $files = array_merge($files, listFiles($thisFile, $origin));
                }else{
                    $tempDir = str_replace('../..', '/game', $thisFile);
                    $extension = substr(strrchr($thisFile, '.'), 1);

                    if($extension == 'js' && strpos($thisFile, $origin) === false) $files[] = $tempDir;
                }
            }
        }

        return $files;
    }

PS:首先,代码在 $files var 上给我一个错误......我改变它并且它可以工作。

于 2013-07-30T15:07:11.277 回答