0

特定のディレクトリのすべてのファイルとサブディレクトリ ファイルを表示するために取得した機能に問題があります。ローカルで動作しますが、アップロードすると、ページに 500 エラーが表示されます。

検索対象のディレクトリ全体でさえ、777 に chmod しようとしましたが、何も機能していないようです。どんな助けでも大歓迎です!

<?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

2

最初に、次の PHP コードを使用してエラー レポートを有効にします。

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

次に、構文エラーなどをチェックします。以前のコメンターが構文を言ったように..

$files = [];

..特定のPHPバージョン(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 に答える