2015-06-17 3 views
0

Когда я использую функцию scandir, я получаю разные результаты по linux и окнам.PHP-функция «scandir» не работает в WordPress, размещенной на окнах

Windows, я вижу только имя папки

Linux это делает работу под

выполнить проверку, если WordPress файлы были изменены?

function find_all_files($dir, $deep) 
{ 
    if(strpos($dir,"wp-content") == false){ 

    $root = scandir($dir); 
    foreach($root as $value) 
    { 
     if($value === '.' || $value === '..') {continue;} 
     if(is_file("$dir/$value")) { 
      $tmpFile = "$dir/$value"; 
      if(5000000>@filesize($tmpFile)){ 

      $result[]="$tmpFile"; 
      } 
      continue; 
     } 

    $tmp = "$dir/$value"; 
     if(strpos($tmp,"wp-content") == false){ 
     if($deep == true){ 
      foreach(@$this->find_all_files("$dir/$value",true) as $value) 
      { 
       $tmpFile = $value; 
        if(5000000>@filesize($tmpFile)){ 

        $result[]="$tmpFile"; 
        } 
      } 
     } 
     } 
    } 
    //var_dump($result); 

    return $result; 
    } 
} 
+0

Что возвращает 'scandir'? Пожалуйста, взгляните на: http://stackoverflow.com/questions/3353853/php-using-scandir-folders-are-treated-as-files – tvgemert

+0

Возврат только имен папок может быть причиной «Пользователь не имеет доступа к файловой системе» Тпх – Mike

ответ

0

У меня была аналогичная проблема, и все это сводилось к:

1), если вы имеете в виду «работает на окнах» OS вам необходимо включить, и начать с директория привода (где установлен сервер) в $dir для сканирования.

2) Windows, может быть требователен сепараторами, сравнить $ реж с Wordpress ABSPATH и попытаться использовать PHP константы DIRECTORY_SEPARATOR вместо собственных '/' сепараторов.

3) И я предполагаю, вы работаете с дорожками, не URLs . Это работает для меня на Windows 7, работает UniServer (ЛАМПЫ):

$rootfolder = 'startfolder'; 
$dir = plugin_dir_path(dirname(__FILE__)).DIRECTORY_SEPARATOR.$rootfolder; 
$files = array_slice(scandir($dir), 2); 

Однако, что вам нужно, чтобы сократить конец пути начинается в установочной директории с ABSPATH или что-то. Но я рекомендую проверить, где ваш файловый архив, например, папка плагинов, не потреблять огромную стойкость при ошибках при работе с подобными вещами.

Подсказка! В документах PHP о скандире есть много возможностей для чтения, восстановления, сканирования функций и проблем. Посмотрите на: http://php.net/manual/en/function.scandir.php

Важно! Не начинайте возиться с доступом к папке Windows, и если вы это сделаете, сначала возьмите RAW-копию всего каталога www, иначе экспортируйте установки Worpdress может стать беспорядочным на сервере Apache в прямом эфире.

Помните, что вам удалось установить новый плагин от Wordpress администратора, вы Propably не имеете проблему доступа к папке.

Hop this помогает!

Смежные вопросы