Не удается проверить каталог с помощью is_dir()

fs444

Новичок
Не удается проверить каталог с помощью is_dir()

Написал код
PHP:
<?  $dir="/Tools/";  if (is_dir($dir)) {  echo "Есть такой каталог";      }  else {  echo "Нет такого каталога";  }  ?>
Скрипт упорно печатает "Нет такого каталога". Скрипт размещен в каталоге "Tools". В чем тут дело?
 

Ravanger

Новичок
напиши
PHP:
$dir  =  dirname(__FILE__);
if (is_dir($dir)) {  echo "Есть такой каталог";      }  else {  echo "Нет такого каталога";  }
и наслаждайся :D
 

fs444

Новичок
Надо было писать "C:\WebServers\home\localhost\www\Tools" либо "..\Tools". Я только не понимаю, в чем разница между "C:\WebServers\home\localhost\www\Tools" и "C:\WebServers\home\localhost\www\Tools\ " (слэш в конце). Без слэша скрипт работает, а со слешэм - нет.

А еще лучше, как посоветовал Ravanger, вместо прописывания пути до файла вручную использовать для получения этого пути конструкцию dirname(__FILE__);
 

Dl

Новичок
Жаль, что ссылки на FAQ упорно обходятся стороной...
 

fs444

Новичок
Вот все, что я нашел на данную тему по ссылке:
В юникс-системах и на веб сайтах корень обозначается косой чертой - "/". Это важно. Это не просто палочка, а самостоятельный АДРЕС, путь. В адресе http://www.site.ru/ последняя косая черта - не для красоты! Она обозначает вполне конкретный адрес - начало сайта. На диске в юникс системах так же можно набрать "cd /" и ты попадешь в корневой каталог.
Здесь написано про сайт. А применимо к файловой системе обратный слеш в конце адреса означает корень файловой системы текущего диска (если я в windows)? Получается, что если я в конце "C:\WebServers\home\localhost\www\Tools" поставлю еще один слеш, меня выкинет снова в "С:\"?
 

Фанат

oncle terrible
Команда форума
ага. а если в конце числа 155 поставить ноль, то получится ноль.
 

fs444

Новичок
Так что означает "\" применительно к "C:\WebServers\home\localhost\www\Tools\" в конце адреса?
 

fs444

Новичок
Дело было в том, что последний обратный слеш экранировал двойную кавычку. Если использовать прямые слеши, то все работает.

Если в unix, то, как я понял, в начале пути обратный слеш означает корень файловой системы. А в windows в абсолютном пути не может быть слеша в начале пути. А что этот слеш может означать в конце пути? Без слеша не будет ясно, что это начало?
 

Фанат

oncle terrible
Команда форума
какое еще "начало в конце"?
ты сам-то понимаешь, что несешь?
 

fs444

Новичок
"C:\WebServers\home\localhost\www\Tools\"
Слэш, помеченный красным, находится в конце пути. О назначении этого слеша я и спрашиваю.
 

Maxsystems

Новичок
Почитал мануал данный по сылкам, думаю незнающий человек ничего не поймет, я работал с этими адресами и то струдом понял чего там написано.. Могу сказать хорошо начинают просматриваться разница между относительными путями при работе с мод реврайт, когда все обращения перенаправляешь на index.php
 

Активист

Активист
Команда форума
Maxsystems
Причем сдесь mod rewrite?

fs444
Бред! Ты говоришь бред!

PHP:
Папка ../htdocs сущевствует
Папка ../htdocs/ сущевствует
Папка D:/Web/www/painter.localhost/htdocs/ сущевствует
Папка D:/Web/www/painter.localhost сущевствует

Папка ..\htdocs сущевствует
Папка ..\htdocs\ сущевствует
Папка D:\Web\www\painter.localhost\htdocs\ сущевствует
Папка D:\Web\www\painter.localhost\htdocs сущевствует

А теперь с пробелом в конце (telepat mode): 
Папки "..\htdocs\ " не сущевствует
Папки "D:\Web\www\painter.localhost\htdocs\ " не сущевствует


Исходный код


<pre>
<?php
echo is_dir("../htdocs") ? "Папка ../htdocs сущевствует\n" : "Папки ../htdocs не сущевствует\n";
echo is_dir("../htdocs/") ? "Папка ../htdocs/ сущевствует\n" : "Папки ../htdocs/ не сущевствует\n";
echo is_dir(getenv("DOCUMENT_ROOT")) ? "Папка ".getenv("DOCUMENT_ROOT")." сущевствует\n" : "Папки ".getenv("DOCUMENT_ROOT")." не сущевствует\n";
echo is_dir(dirname(getenv("DOCUMENT_ROOT"))) ? "Папка ".dirname(getenv("DOCUMENT_ROOT"))." сущевствует\n" : "Папки ".dirname(getenv("DOCUMENT_ROOT"))." не сущевствует\n";
echo "\n";
echo is_dir("..\htdocs") ? "Папка ..\htdocs сущевствует\n" : "Папки ..\htdocs не сущевствует\n";
echo is_dir("..\htdocs\\") ? "Папка ..\htdocs\ сущевствует\n" : "Папки ..\htdocs\ не сущевствует\n";
echo is_dir("D:\Web\www\painter.localhost\htdocs\\") ? "Папка D:\Web\www\painter.localhost\htdocs\ сущевствует\n" : "Папки D:\Web\www\painter.localhost\htdocs\ не сущевствует\n";
echo is_dir("D:\Web\www\painter.localhost\htdocs") ? "Папка D:\Web\www\painter.localhost\htdocs сущевствует\n" : "Папки D:\Web\www\painter.localhost\htdocs не сущевствует\n";
echo "\nА теперь с пробелом в конце (telepat mode): \n";
echo is_dir("..\htdocs\ ") ? "Папка ..\htdocs\ сущевствует\n" : "Папки \"..\htdocs\ \" не сущевствует\n";
echo is_dir("D:\Web\www\painter.localhost\htdocs\ ") ? "Папка \"D:\Web\www\painter.localhost\htdocs\ \" сущевствует\n" : "Папки \"D:\Web\www\painter.localhost\htdocs\ \" не сущевствует\n";
echo "\n\nИсходный код\n\n";
show_source(__FILE__);
?>
-~{}~ 30.10.08 15:58:

Видимо как всегда, дело не в слеше, а в кривых руках...
fs444
Так почему у тебя не как у людей :) Покажи свой исходный код =)
 
Сверху