PHP: поиск файлов в каталоге - PullRequest
3 голосов
/ 24 декабря 2009

Можно ли найти файл на C: / (windows), используя скрипт php? Если да, есть ли какое-либо руководство с примером кода / обходного пути.

Редактировать: веб-сервер находится на том же компьютере, что и C: / Directory в.

Спасибо

Ответы [ 6 ]

3 голосов
/ 24 декабря 2009

Если вы ищете рекурсивный поиск, вас может заинтересовать сплит RecursiveDirectoryIterator .

<?php
$path = 'C:/';
$file = 'issetup.exe';

$rdi = new RecursiveDirectoryIterator($path);
$rit = new RecursiveIteratorIterator($rdi);
foreach( $rit as $path=>$info ) {
  if ( $file===$info->getFilename() ) {
    echo $path, "\n";
    break;
  }
}
2 голосов
/ 24 декабря 2009

Пока вы хотите просматривать только один каталог, тогда да, кодирование его с использованием функций PHP происходит быстрее. Но если вы хотите выполнить рекурсивный поиск по дереву для определенного имени файла, то, вероятно, будет гораздо быстрее раскошелиться:

$cmd="dir $fname /s"
chdir("C:/");
$found=explode("\n",`$cmd`);

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

С

1 голос
/ 24 декабря 2009

Я использую Scandir для этой цели, вот так:

<code>$path = $_SERVER['DOCUMENT_ROOT'];
$files = scandir($path);
echo '<pre>';
if (count($files) > 2) {
  // first 2 entries are '.' and '..'
  $files = array_slice($files, 2);
  print_r($files);
}
echo '
';

Читайте дальше http://php.net/manual/en/function.scandir.php И для справки по обработке результирующего массива: http://php.net/manual/en/ref.array.php

0 голосов
/ 24 декабря 2009

Я предполагаю, что вы хотите запустить из фактического интерпретатора PHP (т.е. как локальный скрипт), вы можете использовать SPL (php 5)

см. здесь и здесь только для 2 примеров. Больше примеров, если вы читаете руководство по PHP и многие другие в Интернете, если будете искать достаточно усердно.

0 голосов
/ 24 декабря 2009

Если вы не говорите о диске C: на сервере или версии PHP командной строки, работающей на вашем компьютере с Windows, PHP в качестве языка серверной стороны не имеет доступа к ваш диск C:

Если вы ссылаетесь на диск C: на сервере, то функция readdir (как и предлагал haim evgi) должна работать для вас.

Не забудьте прочитать предупреждение на справочной странице readdir и не забудьте сначала открыть каталог. Ссылка на функцию предоставляет пример кода.

0 голосов
/ 24 декабря 2009

Если вы говорите о сервере, на котором установлен PHP, это должно быть бесконечно возможным с помощью файловой команды PHP, если вы обращаетесь к областям жесткого диска, которые имеют общие права доступа с веб-сервером. Первый пример на PHP.net говорит столько же ...

http://php.net/manual/en/function.file.php

Если вы говорите о машине вашего пользователя, они могут выбрать файл для загрузки, используя элемент формы <input id="uploader" name="uploader" type="file">, но вы не можете просматривать его, используя любой язык на стороне сервера, потому что это именно так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...