Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рекуривный обход директории :О ...с препятствиями...
 
 автор: Eugene77   (13.09.2008 в 18:05)   письмо автору
 
 

Я понял, что правильно ли закачены скрипты на сервер никто мне не скажет. И не прицепил ли кто-нибудь к ним ещё какой-нибудь отсебятины - за этим тоже надо последить самому.
В результате написал не сложную программку, которая рекурсивно обходит весь мой сайт и присылает мне контрольные суммы всех файлов.
Только вот на хостинге она не работает...
Смотрю; права на файлы 644 - вроде нормально.
А вот на каталоги: 755 - это меня насторожило.
Скорее всего я не смогу прочитать список файлов из такого каталога?
Что делать? - Спрашиваю техподдержку.
Они мне говорят:
"На нашем сервере принудительно изменен режим php на php-fastgi и удален mod_php".
Из этого якобы следует,что любое изменение в этих правах приведёт к ошибке 500.
Ту-то я и растерялся...
1. Подскажите как мне контрольные суммы своих же файлов получить?
(Я уже обнаружил 3 штуки с ошибками, но это случайно получилось)
(Файлов много - несколько сотен)
2. Что это за php-fastgi ? Это чистейшее экспериментаторство? Или это уже зарекомендовавшая себя технология? Чем он знаменит?
3. Что даёт удаление mod_php ?

  Ответить  
 
 автор: bill   (13.09.2008 в 18:06)   письмо автору
 
   для: Eugene77   (13.09.2008 в 18:05)
 

Евгений Вы с Волгограда? =) (очень ник знакомый)

  Ответить  
 
 автор: Eugene77   (13.09.2008 в 22:09)   письмо автору
 
   для: bill   (13.09.2008 в 18:06)
 

>Евгений Вы с Волгограда?
Нет. Ник получился на автопилоте, когда я пытался быстрей угадать что же есть свободного на этом форуме.
По теме вопроса: вот раскоапал статью:
http://dklab.ru/chicken/nablas/49.html
Из которой мало чего понял, но, кажется, из ответа техподдержки должно следовать,что они вообще не используют Апачи.
Кто-нибудь понимает как тогда запускаются скрипты, и кто у них получается владелец?

  Ответить  
 
 автор: Trianon   (13.09.2008 в 22:46)   письмо автору
 
   для: Eugene77   (13.09.2008 в 22:09)
 

>Кто-нибудь понимает как тогда запускаются скрипты, и кто у них получается владелец?

а поглядеть?
posix_geteuid()
posix_getegid()
posix_getgrgid()
posix_getpwuid()

  Ответить  
 
 автор: Eugene77   (14.09.2008 в 07:15)   письмо автору
 
   для: Trianon   (13.09.2008 в 22:46)
 

Спасибо!
Сейчас погляжу!
Впрочем я сам тут промахнулся: права на большинство каталогов вполене достаточные для их чтения. Это только корневой каталог имеет права 700. об него-то и сптыкался мой скрипт.
Если указываю относительные пути не проходящие через него - скрипт работает. Ура!

Только теперь всё-равно проблема остаётся: Я не могу сделать обход всего сайта. Могу только обход каждой из его поддиректорий отдельно.

Что бы придумать?

  Ответить  
 
 автор: Trianon   (14.09.2008 в 11:03)   письмо автору
 
   для: Eugene77   (14.09.2008 в 07:15)
 

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

  Ответить  
 
 автор: Eugene77   (14.09.2008 в 18:19)   письмо автору
 
   для: Trianon   (14.09.2008 в 11:03)
 

>загрузить файл со списком элементов корня сайта.
>В программе обхода сделать исключение для нулевого уровня рекурсии.
>Или даже выкинуть нулевой уровень в отдельную функцию - так проще.

Да, такими заплатками вполне можно отделаться - работать будет.
Жалко только красивый код портить, впрочем, если в отдельную функцию, то не стошнит.
Хотелось бы, конечно, более элегантное решение...

  Ответить  
 
 автор: Eugene77   (16.09.2008 в 09:18)   письмо автору
 
   для: Trianon   (14.09.2008 в 11:03)
 

Что за глупость я написал!
Конечно ничего так не получится!
Если мы имеем такую структуру директорий:
______________ROOT
_____________ /_____\
____________ A _____ B
__________________ / _\
_________________ C _ D

А скрипт рекурсивного обхода располагается в директории С, то он может попасть только в D
( ../D ), а ../../A
Уже не работает т. к. права у ROOT 700.
Мне получается надо класть в каждую поддиректорию свой отдельный скрипт?

  Ответить  
 
 автор: Trianon   (16.09.2008 в 09:45)   письмо автору
 
   для: Eugene77   (16.09.2008 в 09:18)
 

>скрипт рекурсивного обхода располагается в директории С, то он может попасть только в D

это не так

[поправлено модератором]

  Ответить  
 
 автор: Eugene77   (16.09.2008 в 18:33)   письмо автору
 
   для: Trianon   (16.09.2008 в 09:45)
 

Может быть мы о разном говорим, или может быть у меня ошибка в скрипте, только спотыкается он о папку с правами 700.
Вот скрипт:
<?php
// Файл рекурсивного чтения файлов из директории $dir а
// Возвращает список файлов CRC32 и длину каждого из них
/
  
Error_Reporting(E_ALL );

$root=str_replace('/''\\'$_SERVER['DOCUMENT_ROOT'].'\\'.$_GET['dir']); // Так вообще ничего не возвращает
$root='../../..'// Так тоже ничего не возвращает
$root='../..'// А вот так работает нормально, даёт тот же результат, что и при тестировании на localhost
 
find_new($root);


 function 
find_new($dir){
     global 
$root;
    
$files=glob($dir.'/*.*' );
    foreach(
$files as $f){
        
$file=substr($fstrlen($root));
        if(
false==($content file_get_contents($f))) echo "$file ".'-1'." ".'-1'."\n";
        else echo 
"$file ".CRC32($content)." ".strlen($content)."\n";
    }
    
$new_dir=glob($dir.'/*',GLOB_ONLYDIR ) ;
    foreach( 
$new_dir as $check)  find_new($check);
 }
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования