Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Доступ к файлам

48K
13 июня 2009 года
LSD
7 / / 13.06.2009
Доброго времени всем!!!
Помогите чайнику!! Принялся изучать PHP - все поставил Апач SQL PHP под WInXP. Все ратало - и вот обнаруживаю глюк.Простой скрипт (проходит каталог сайта в поиске файла и выводит содержимое). До поры времени (испытательный каталог) с несколькими файлами обрабатывался нормально. Потом в тот же каталог добавляю другие файлы (с этого компа) - и все - выдает на вновь добаленных файлах ошибку доступа
failed to open stream: No such file or directory in
Перечитал все мануалы, подспудно панимаю что гдето регулируется доступ (но почему для одних файлов доступ имеется). Притом если "нормальные " файлы переименовываю или копирую - таже ошибка.
4 сутки сижу и дичаю от бессилия:(
244
13 июня 2009 года
UAS
2.0K / / 19.07.2006
Я думаю, для начала стоит показать код, который выдает вам ошибку (т.е. сканирование файлов и прочее).
Или возможно криво поставились PHP&Apache.

Также, надеюсь, вы не Денвер ставили, так как там вообще все "довольно странно" работает.
48K
14 июня 2009 года
LSD
7 / / 13.06.2009
Код выдернут из какогото примера и немного переделан


<?Php
///Функция контроля совпадения строки с шаблоом
//Пробелы считаются как элемент или
//*-любое слово ; = перечисление
function LSD_CheckStr($strSrc,$strFind){
$s0=strtoupper($strSrc);
$dwLenFind=strlen($strFind);
$dwFirstChar=strchr($s0,strtoupper($strFind[0])); //Получаем вхождение первого символа строки
$strSub=substr($strSrc,$dwFirstChar,$dwLenFind);
return (strcmp($strSub,strtoupper($strFind))==0);
}

//Функция печати результатов
function LSD_PrintLink($strFile,$strComment){
//печатаем в параграф
$result= "<p align=\"left\"><A HREF=\"$strFile\" target=_Main>$strFile</A><BR>";
$result.=$strComment."</p><br>";
return($result);
}

// Функция выдачи результатов каталога с описание м файлов
function LSD_GetDir($strPath,$strFind){
if (is_dir($strPath)) {
echo $strPath;
if ($hCurDir = opendir($strPath)) {
while (($strFile = readdir($hCurDir)) !== false) {
if ( ($strFile != ".") && ($strFile != "..") ) {
//Проверка на каталог
if (is_dir($strFile)){
$NewDir=$strPath.$strFile;
echo $NewDir;
//LSD_GetDir($NewDir,$strFind,&$arrTypeExcl);
}
else{
//Проверка самого имени файла
$boolFind =LSD_CheckStr($strFile,$strFind);
if (!$boolFind){
//Выполнение операций с файлами
//цикл построчного чтения из файла согласно типу
echo $strFile."<br>";
$hFile = fopen($strFile, "r");
while (!feof($hFile) &&($boolFind!=True)) {
$strBuff = fgets($hFile, 4096);
//Контроль строки
$boolFind =LSD_CheckStr($strBuff,$strFind);

}
fclose($hFile);
}
//Печать найденного в зависимости от типа
if ($boolFind) {
$hFile = fopen($strFile, "r");
$strBuff = fread($hFile, 255);
$strBuff.=chr(0);
fclose($hFile);
//sprintf('%s\n',$strBuff);
//echo $strBuff;
echo LSD_PrintLink($strFile,"");
}
}
}
}
closedir($hCurDir);
}
}
}


///Объявление массива данных инициализации

$strHeader="<html><head><title>";
$strHeaderFromTitle="</title><base target=\"_Main\"></head><body>";
$strFooter="</body></html>";


echo $strHeader;
echo "Результат поиска";
echo $strHeaderFromTitle;
echo "Start";
$strPath="e:/webserver/files/exempl/";
$strFind="lsd";
LSD_GetDir($strPath,$strFind);
echo $strFooter;
?>

Выдает ошибку при открытиии файла - притом файлы закаченные в каталог ранее (2 дней назад) - обрабатываются нормально.
Ставил пакет WAMP - там 3 в одном. Поставился нормально
Все настройки нормально вроде работают. С горя начал юзать httpd.conf - никакой реакции
Суть данного скрипта - в том что есть каталог (с подкаталогами - но рекурсия пока отключена) с горой инфы - и ее как то надо систематизировать. Налюбой Делфе это тривиальна - но положение каталога может быть удаленно и приходится использовать веб интерфейс. Поэтому и пробиваю PHP так как каталог большой и может динамически изменятся, а следовательно и генерить страницы надо динамически.
12
14 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: LSD
С горя начал юзать httpd.conf


Да такое в башорг нужно оправлять сразу :D

По сабжу... что ты хочешь, если у тебя скрипт формирует неправильные ссылки. От Options Indexes и то больше бы толку было.

366
14 июня 2009 года
int
668 / / 30.03.2005
scandir использовать легче.
12
14 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: int
scandir использовать легче.


Options Indexes даже PHP не требует, так шта ;)

Кроме того не стоит забывать, с какой версии ввели scandir :)

48K
14 июня 2009 года
LSD
7 / / 13.06.2009
Уважаемые специалисты!!
Проблема не в том чтоб увидеть весь каталог - это я и так вижу - в теле цикла переменная имени файла нормально инициализируется. А проблема в том что одни файлы открываются -а другие нет - пишет что не найден

Warning: fopen(read.txt) [function.fopen]: failed to open stream: No such file or directory in E:\WEBSERVER\_SCRIPTS\lsd_search.php on line 42

В чем прикол?!!! Файлы реально существуют, все на локальной машине, работаю с учетной записью администратора. Из за этого цирка даже не знаю стоит ли продолжать проект на данном языке. Помогите новичку разобратся!!!!
274
14 июня 2009 года
Lone Wolf
1.3K / / 26.11.2006
Трабл может быть в имени файла... типа русские буквы.. это так на вскидку
12
14 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: LSD
Уважаемые специалисты!!
А проблема в том что одни файлы открываются -а другие нет - пишет что не найден

Warning: fopen(read.txt) [function.fopen]: failed to open stream: No such file or directory in E:\WEBSERVER\_SCRIPTS\lsd_search.php on line 42


Чудес не бывает. Проблема либо в правах на файл, либо в указании неверного пути до файла. Других вариантов просто нет.

12
14 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Lone Wolf
Трабл может быть в имени файла... типа русские буквы.. это так на вскидку


Не в данном случае:

Цитата: LSD

Warning: fopen(read.txt) [function.fopen]: failed to open stream: No such file or directory in E:\WEBSERVER\_SCRIPTS\lsd_search.php on line 42

92
14 июня 2009 года
Тень Пса
2.2K / / 19.10.2006
Цитата: LSD
Уважаемые специалисты!!
Проблема не в том чтоб увидеть весь каталог - это я и так вижу - в теле цикла переменная имени файла нормально инициализируется. А проблема в том что одни файлы открываются -а другие нет - пишет что не найден

Warning: fopen(read.txt) [function.fopen]: failed to open stream: No such file or directory in E:\WEBSERVER\_SCRIPTS\lsd_search.php on line 42

В чем прикол?!!! Файлы реально существуют, все на локальной машине, работаю с учетной записью администратора. Из за этого цирка даже не знаю стоит ли продолжать проект на данном языке. Помогите новичку разобратся!!!!


100% ты не указал в какой директории брать файл.

UPD: alekciy уже опередил с подсказкой )

48K
15 июня 2009 года
LSD
7 / / 13.06.2009
100% ты не указал в какой директории брать файл.

----------
Нет файлы находятся в одной директории - только одни открываются а другие нет. Однако имена файлов видны. Диск проверял скандиском -всме в норме. Имена аглицкие 8 букв. Только с правами проблема - как под XP их определить? что атрибуты фалов функция lstat не выдает однозначно. И хозяина чтото под экспихой не просматривается. Я уже совсем дураком стал. Мануал по htaccess скоро на память знать буду - перепробовал все варианты доступа вплоть до полного разрешения на сервак - по барабану. Самый прикол в том что беру тот файл который открывается - копирую в новый под новым именем - таже фигня.
Люди!!!!!!!!!! Это что прикол юникса?!!!!!!!!!!!!
12
15 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: LSD

Нет файлы находятся в одной директории - только одни открываются а другие нет.


Не бывает так. Компьютер характерен крайне высокой степенью детерминизма, при прочих равных условиях не бывает так, что один файл открывается, а другой нет. Не бывает и все тут.

Возможно причина в правах на файл, второй варинат это указывается не абсолютный путь к файлу и скрипт пытается открывать файл которого реально нет. Делай echo переменной $strFile.

В ХР права на файл можно посмотреть через контекстное меню на вкладке Безопасность. Если она не отображается, то Сервис - Свойства папки... - вкладка Вид - группа Дополнительные параметры выключить "Использовать простой общий доступ".

Цитата: LSD

Люди!!!!!!!!!! Это что прикол юникса?!!!!!!!!!!!!


Нет, это прикол не совсем правильного понимания логики работы компьютера на уровне ОСи.

48K
19 июня 2009 года
LSD
7 / / 13.06.2009
Доброго времени суток! Спасибо всем кто принял деятельное участие в решении моей проблемы. Да -дествительно хомуты бли с правами доступа, тут я серьезно тупанул, пока не прочел мануал по том как Винда формирует группы и права. Отдельное спасибо тому специалисту который подсказал как увидеть эти права под XP - а то не сталкивался и не оратил внимания. Помню что в 2000 такая фишка с владельцами была.
12
19 июня 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: LSD
Помню что в 2000 такая фишка с владельцами была.


На сколько я помню там не было сокрытие вкладки "Безопасность". Эту фичу MS, на сколько я сейчас помню, ввели с ХР.

ЗЫ. Ну я же говорил, что чудес не бывает ;)

48K
20 июня 2009 года
LSD
7 / / 13.06.2009
Цитата: alekciy
На сколько я помню там не было сокрытие вкладки "Безопасность". Эту фичу MS, на сколько я сейчас помню, ввели с ХР.

ЗЫ. Ну я же говорил, что чудес не бывает ;)



-------
Да именно безопастность. Только в 2000 она была всегда - но я на нее особо не обращал внимания. А в XP - ее "скрыли" введя пункт "использовать простой общий доступ к файлам" - даже и подумать не мог кудаделись права файлов :-)
Сбасибо большое за подсказку!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог