2013-07-30 4 views
0

У меня возникла проблема с функцией, которую я получил для отображения всех файлов и файлов подкаталогов данного каталога. Он работает локально, но когда я его загружаю, страница просто дает ошибку 500.PHP create 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; 
} 
+0

Вы проверили, есть ли на сервере отчеты об ошибках? – BenM

+0

Что имеет chmod, чтобы сделать с ошибкой 500? Во всяком случае, в основном ошибка 500 вызвана apache. Вы что-то изменили в '.htaccess'? –

+0

@BenM Да, и я попытался использовать 'ini_set' и' error_reporting' для включения сообщений об ошибках, но все же 500 ошибок – Oyed

ответ

3

Синтаксис:

$files = []; 

Доступна только из определенной PHP версии (5.4, я думаю). Убедитесь, что сервер имеет ту же версию, что и среда разработки.

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: Сначала код пятерки мне ошибку на $ файлы вар ... я изменить это, и это работает.

2

Сначала включите сообщения об ошибках, используя следующий PHP код:

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

Во-вторых, проверить на наличие ошибок синтаксиса или что-то еще. Как и предыдущие комментаторы сказал синтаксис ..

$files = []; 

..is доступен только с определенной PHP версии (5.4, я думаю). Убедитесь, что сервер имеет ту же версию, что и среда разработки.