Меню

Dir php не работает

php is_dir обычно не работает

поэтому я перечисляю элементы на странице для своего кинофильма и до тех пор, пока нет субдира, кажется, все в порядке.

наиболее подходящий код можно подобрать оттуда до XHR, чтобы отправить информацию на страницу functions.php. Думаю, что все кажется солидным, поскольку оно работает для папок с файлами в них и без других папок.

вот код для функции.php

кажется, что is_dir не хочет работать. Я выполнил поиск, и у всех остальных, похоже, проблема с использованием абсолютных путей. Я знаю, что это не моя проблема, поскольку я печатаю $ arg var вместе с эхо-строкой для закрывающего тега ul, и он показывает полный путь и его определенно не разрешения.

Я попытался изменить is_dir на! Is_file, и это позволяет ему перечислять папки, но также отображает файлы, которые я не хочу показывать, поскольку он обходит мой фильтр ext (я думаю, я мог бы добавить фильтр к этому, но is_dir должен работать правильно?).

Поэтому в основном мне нужна помощь, чтобы заставить эту работу работать. Я сумасшедший и не понимаю is_dir, или есть лучший способ?

также, если кто-то хочет посмотреть на JavaScript, который я использую, чтобы скрыть вложенные списки, если он уже отображается, пожалуйста, не стесняйтесь. Я чувствую, что это очень «взломанный» способ сделать это, но я все еще довольно новый и не знаю много трюков. Его в разделе jQuery AJAX файла dirList.js

Btw, убедитесь, что вы используете браузер, совместимый с HTML5, поскольку я использую тег видео среди некоторых других материалов HTML5. Я использую хром, развивая это.

чтобы задать другой вопрос.

Я смоделировал полноэкранный режим для видеотега с помощью CSS, и он отлично работает, за исключением того, что он по-прежнему показывает полосу прокрутки справа, и это раздражает на действительно темных сценах. Есть ли способ избавиться от этого. Он сохраняется, даже если я тоже в полноэкранном режиме в браузере (f11). Браузер Chrome снова, и у меня установлен z-index 10, и ничего больше не установлено.

Я избавился от полосы прокрутки, выполнив $ (‘body’). Css (‘overflow’, ‘hidden’); как часть моей полноэкранной функции, и просто выключил ее, когда ее переключили обратно.

Источник

Dir php не работает

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

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

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Читайте также:  Респекта нет не работает

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Источник

is_dir

(PHP 4, PHP 5, PHP 7, PHP 8)

is_dir — Определяет, является ли имя файла директорией

Описание

Определяет, является ли имя файла директорией.

Список параметров

Путь к файлу. Если filename является относительным именем, он будет проверяться относительно текущей рабочей директории. Если filename является символической или жёсткой ссылкой, то ссылка будет раскрыта и проверена. При включённом open_basedir могут применяться дальнейшие ограничения.

Возвращаемые значения

Возвращает true , если файл существует и является директорией, иначе возвращается false .

Ошибки

В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .

Примеры

Пример #1 Пример использования функции is_dir()

( is_dir ( ‘a_file.txt’ ));
var_dump ( is_dir ( ‘bogus_dir/abc’ ));

var_dump ( is_dir ( ‘..’ )); // на одну директорию выше
?>

Результат выполнения данного примера:

Примечания

Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache() .

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обёртками url. Список обёрток, поддерживаемых семейством функций stat() , смотрите в разделе Поддерживаемые протоколы и обёртки.

Смотрите также

  • chdir() — Изменяет каталог
  • dir() — Возвращает экземпляр класса Directory
  • opendir() — Открывает дескриптор каталога
  • is_file() — Определяет, является ли файл обычным файлом
  • is_link() — Определяет, является ли файл символической ссылкой

User Contributed Notes 20 notes

This is the «is_dir» function I use to solve the problems :

I can’t remember where it comes from, but it works fine.

My solution to the problem that you must include the full path to make «is_dir» work properly as a complete example:

Note that this functions follows symbolic links. It will return true if the file is actually a symlink that points to a directory.

(Windows Note: Under recent versions of Windows you can set symlinks as long as you’re administrator, but you cannot remove directory symlinks with «unlink()», you will have to use «rmdir testlink» from the shell to get rid of it.)

Running PHP 5.2.0 on Apache Windows, I had a problem (likely the same one as described by others) where is_dir returned a False for directories with certain permissions even though they were accessible.

Strangely, I was able to overcome the problem with a more complete path. For example, this only displays «Works» on subdirectories with particular permissions (in this directory about 1 out of 3):

$d = opendir(«./albums/mydir»);
while(false !== ($f = readdir($d))) <
echo » «;
if(is_dir($f)) <
echo «Works:» . $f . ««;
>
>

However, this works properly for all directories:

$d = opendir(«./albums/mydir»);
while(false !== ($f = readdir($d))) <
echo » «;
$dName = «./albums/mydir/» . $f;
if(is_dir($dName)) <
echo «Works:» . $dName . ««;
>
>

I don’t understand the hit-and-miss of the first code, but maybe the second code can help others having this problem.

When trying (no ‘pear’) to enumerate mounted drives on a win32 platform (Win XP SP3, Apache/2.2.11, PHP/5.2.9), I used:

for( $c = ‘A’ ; $c ‘Z’ ; $c ++)
if( is_dir ( $c . ‘:’ ))
echo $c . ‘: ‘ ;
>
?>

which yielded:
A: C: D: E: F: G: H: I:

PITFALL in sub dir processing

After struggeling with a sub-dir processing (some subdirs were skipped) AND reading the posts, I realized that virutally no-one clearly told what were wrong.

Читайте также:  Почему не работает электрический стеклоподъемник

opendir(«myphotos»); // Top dir to process from (example)

if ($fname <0>== ‘.’) continue; // skip dirs . and .. by first char test

if (is_dir($fname)) call_own_subdir_process; // process this subdir by calling a routine

The «is_dir()» must have the FULL PATH or it will skip some dirs. So the above code need to INSERT THE PATH before the filename. This would give this change in above.

if (is_dir(«myphotos\» . $fname)) call_own_subdir_process; // skip subdirs

The pitfall really was, that without full path some subdirs were found. hope this clears all up

Note that is_dir() also works with ftp://.

if( is_dir ( ‘ftp://user:pass@host/www/path/to/your/folder’ )) <
// Your code.
>
?>

But note that if the connexion fails due to invalide credentials, this will consider that the folder doesn’t exist and will return FALSE.

Here is another way to test if a directory is empty, which I think is much simpler than those posted below:

= ‘directory’ ;
echo ( count ( glob ( » $dir /*» )) === 0 ) ? ‘Empty’ : ‘Not empty’ ;
?>

Ah ha! Maybe this is a bug, or limitation to be more precise, of php. See http://bugs.php.net/bug.php?id=27792

A workaround is posted on the page (above) and seems to work for me:

function is_dir_LFS($path) <
return ((‘d’==substr(exec(«ls -dl ‘$path'»),0,1))?(true):(false));
>

PS: I’m using PHP 4.3.10-16, posts report this problem up to 5.0

use this function to get all files inside a directory (including subdirectories)

function scan_Dir ( $dir ) <
$arrfiles = array();
if ( is_dir ( $dir )) <
if ( $handle = opendir ( $dir )) <
chdir ( $dir );
while ( false !== ( $file = readdir ( $handle ))) <
if ( $file != «.» && $file != «..» ) <
if ( is_dir ( $file )) <
$arr = scan_Dir ( $file );
foreach ( $arr as $value ) <
$arrfiles [] = $dir . «/» . $value ;
>
> else <
$arrfiles [] = $dir . «/» . $file ;
>
>
>
chdir ( «../» );
>
closedir ( $handle );
>
return $arrfiles ;
>

Note that there quite a few articles on the net that imply that commands like is_dir, opendir, readdir cannot read paths with spaces.

On a linux box, THAT is not an issue.

Sample test code;

$dir = «Images/Soma ALbum Name with spaces»;

// Open a directory, and read its contents
if (is_dir($dir)) <
echo $dir.»
«; // will not appear if above fails
if ($dh = opendir($dir)) <
echo $dir.»
«; // will not appear if above fails
while (($file = readdir($dh)) !== false) <
echo «filename:» . $file . «
«;
echo $dir.»
«; // will not appear if above fails
>
closedir($dh);
>
>

this function bypasses open_basedir restrictions.

example:

output:
Warning: open_basedir restriction in effect

output:
true (or false, depending whether it is or not. )


visit puremango.co.uk for other such wonders

An even better (PHP 5 only) alternative to «Davy Defaud’s function»:

function is_empty_dir ( $dir )
<
if (( $files = @ scandir ( $dir )) && count ( $files ) 2 ) <
return true ;
>
return false ;
>
?>

NOTE: you should obviously be checking beforehand if $dir is actually a directory, and that it is readable, as only relying on this you would assume that in both cases you have a non-empty readable directory.

When I run a scandir I always run a simple filter to account for file system artifacts (especially from a simple ftp folder drop) and the «.» «..» that shows up in every directory:

if ( is_dir ( $folder ) <
$contents = scandir ( $folder );
$bad = array( «.» , «..» , «.DS_Store» , «_notes» , «Thumbs.db» );
$files = array_diff ( $contents , $bad );
>
?>

If you are using Mac, or others systems that store information about the directory layout and etc, the function:

function empty_dir($dir) <
if (($files = @scandir($dir)) && count($files)

Unfortunately, the function posted by p dot marzec at bold-sg dot pl does not work.
The corrected version is:

// returns true if folder is empty or not existing
// false if folde is full

function is_empty_folder($dir) <
if (is_dir($dir)) <
$dl=opendir($dir);
if ($dl) <
while($name = readdir($dl)) <
if (!is_dir(«$dir/$name»)) < //

Источник

Dir php не работает

(PHP 4, PHP 5, PHP 7, PHP 8)

Читайте также:  Как настроить клапана рено логан

dir — Возвращает экземпляр класса Directory

Описание

Псевдо-объектно-ориентированный механизм для чтения каталога. Открывается переданный в параметре directory каталог.

Список параметров

Каталог для открытия

Возвращаемые значения

Возвращает экземпляр класса Directory или false в случае возникновения ошибки.

Список изменений

Версия Описание
8.0.0 context теперь допускает значение null.

Примеры

Пример #1 Пример использования dir()

Обратите внимание на способ, которым осуществляется проверка значения, возвращаемого Directory::read() в примере, приведённом ниже. В этом примере явно проводится проверка значения на идентичность (выражения идентичны, когда они равны и являются одного типа — за более подробной информацией обратитесь к главе Операторы сравнения) значению false , поскольку в ином случае, любой элемент каталога, чьё имя может быть выражено как false , остановит цикл.

Результатом выполнения данного примера будет что-то подобное:

Примечания

Порядок, в котором метод «read» возвращает элементы каталога, зависит от операционной системы.

User Contributed Notes 19 notes

// use $entry[0] != ‘.’ to detect if it’s ‘..’ or ‘.’

$d = dir ( ‘.’ );
echo «Pointeur : » . $d -> handle . «
\n» ;
echo «Chemin : » . $d -> path . «
\n» ;
while ( false !== ( $entry = $d -> read ())) <

This one’s pretty nice. After getting frustrated for hunting down .jpg files in my massive music collection (PHP would run out of memory), I thought there should be a preg_ls function.

function preg_ls ($path=».», $rec=false, $pat=»/.*/») <
// it’s going to be used repeatedly, ensure we compile it for speed.
$pat=preg_replace(«|(/.*/[^S]*)|s», «\\1S», $pat);
//Remove trailing slashes from path
while (substr($path,-1,1)==»/») $path=substr($path,0,-1);
//also, make sure that $path is a directory and repair any screwups
if (!is_dir($path)) $path=dirname($path);
//assert either truth or falsehoold of $rec, allow no scalars to mean truth
if ($rec!==true) $rec=false;
//get a directory handle
$d=dir($path);
//initialise the output array
$ret=Array();
//loop, reading until there’s no more to read
while (false!==($e=$d->read())) <
//Ignore parent- and self-links
if (($e==».»)||($e==»..»)) continue;
//If we’re working recursively and it’s a directory, grab and merge
if ($rec && is_dir($path.»/».$e)) <
$ret=array_merge($ret,preg_ls($path.»/».$e,$rec,$pat));
continue;
>
//If it don’t match, exclude it
if (!preg_match($pat,$e)) continue;
//In all other cases, add it to the output array
$ret[]=$path.»/».$e;
>
//finally, return the array
return $ret;
>

Not bad for a mere 18 lines, don’t you think?

foreach (preg_ls(«/etc/X11», true, «/.*\.conf/i») as $file) echo $file.»\n»;

Here my solution how to do effective recursiv directory listing.

/**
* example of use:
*/
$d = new RecDir ( «/etc/» , false );
echo «Path: » . $d -> getRootPath () . «\n» ;
while ( false !== ( $entry = $d -> read ())) <
echo $entry . «\n» ;
>
$d -> close ();

class RecDir
<
protected $currentPath ;
protected $slash ;
protected $rootPath ;
protected $recursiveTree ;

function __construct ( $rootPath , $win = false )
<
switch( $win )
<
case true :
$this -> slash = ‘\\’ ;
break;
default:
$this -> slash = ‘/’ ;
>
$this -> rootPath = $rootPath ;
$this -> currentPath = $rootPath ;
$this -> recursiveTree = array( dir ( $this -> rootPath ));
$this -> rewind ();
>

function __destruct ()
<
$this -> close ();
>

public function close ()
<
while( true === ( $d = array_pop ( $this -> recursiveTree )))
<
$d -> close ();
>
>

public function getRootPath ()
<
if(isset( $this -> rootPath ))
<
return $this -> rootPath ;
>
return false ;
>

public function getCurrentPath ()
<
if(isset( $this -> currentPath ))
<
return $this -> currentPath ;
>
return false ;
>

public function read ()
<
while( count ( $this -> recursiveTree )> 0 )
<
$d = end ( $this -> recursiveTree );
if(( false !== ( $entry = $d -> read ())))
<
if( $entry != ‘.’ && $entry != ‘..’ )
<
$path = $d -> path . $entry ;

if( is_file ( $path ))
<
return $path ;
>
elseif( is_dir ( $path . $this -> slash ))
<
$this -> currentPath = $path . $this -> slash ;
if( $child = @ dir ( $path . $this -> slash ))
<
$this -> recursiveTree [] = $child ;
>
>
>
>
else
<
array_pop ( $this -> recursiveTree )-> close ();
>
>
return false ;
>

public function rewind ()
<
$this -> closeChildren ();
$this -> rewindCurrent ();
>

public function rewindCurrent ()
<
return end ( $this -> recursiveTree )-> rewind ();
>
>
?>

Источник

Adblock
detector