|
|
|
| Я понял, что правильно ли закачены скрипты на сервер никто мне не скажет. И не прицепил ли кто-нибудь к ним ещё какой-нибудь отсебятины - за этим тоже надо последить самому.
В результате написал не сложную программку, которая рекурсивно обходит весь мой сайт и присылает мне контрольные суммы всех файлов.
Только вот на хостинге она не работает...
Смотрю; права на файлы 644 - вроде нормально.
А вот на каталоги: 755 - это меня насторожило.
Скорее всего я не смогу прочитать список файлов из такого каталога?
Что делать? - Спрашиваю техподдержку.
Они мне говорят:
"На нашем сервере принудительно изменен режим php на php-fastgi и удален mod_php".
Из этого якобы следует,что любое изменение в этих правах приведёт к ошибке 500.
Ту-то я и растерялся...
1. Подскажите как мне контрольные суммы своих же файлов получить?
(Я уже обнаружил 3 штуки с ошибками, но это случайно получилось)
(Файлов много - несколько сотен)
2. Что это за php-fastgi ? Это чистейшее экспериментаторство? Или это уже зарекомендовавшая себя технология? Чем он знаменит?
3. Что даёт удаление mod_php ? | |
|
|
|
|
|
|
|
для: Eugene77
(13.09.2008 в 18:05)
| | Евгений Вы с Волгограда? =) (очень ник знакомый) | |
|
|
|
|
|
|
|
для: bill
(13.09.2008 в 18:06)
| | >Евгений Вы с Волгограда?
Нет. Ник получился на автопилоте, когда я пытался быстрей угадать что же есть свободного на этом форуме.
По теме вопроса: вот раскоапал статью:
http://dklab.ru/chicken/nablas/49.html
Из которой мало чего понял, но, кажется, из ответа техподдержки должно следовать,что они вообще не используют Апачи.
Кто-нибудь понимает как тогда запускаются скрипты, и кто у них получается владелец? | |
|
|
|
|
|
|
|
для: Eugene77
(13.09.2008 в 22:09)
| | >Кто-нибудь понимает как тогда запускаются скрипты, и кто у них получается владелец?
а поглядеть?
posix_geteuid()
posix_getegid()
posix_getgrgid()
posix_getpwuid() | |
|
|
|
|
|
|
|
для: Trianon
(13.09.2008 в 22:46)
| | Спасибо!
Сейчас погляжу!
Впрочем я сам тут промахнулся: права на большинство каталогов вполене достаточные для их чтения. Это только корневой каталог имеет права 700. об него-то и сптыкался мой скрипт.
Если указываю относительные пути не проходящие через него - скрипт работает. Ура!
Только теперь всё-равно проблема остаётся: Я не могу сделать обход всего сайта. Могу только обход каждой из его поддиректорий отдельно.
Что бы придумать? | |
|
|
|
|
|
|
|
для: Eugene77
(14.09.2008 в 07:15)
| | загрузить файл со списком элементов корня сайта.
В программе обхода сделать исключение для нулевого уровня рекурсии.
Или даже выкинуть нулевой уровень в отдельную функцию - так проще. | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 11:03)
| | >загрузить файл со списком элементов корня сайта.
>В программе обхода сделать исключение для нулевого уровня рекурсии.
>Или даже выкинуть нулевой уровень в отдельную функцию - так проще.
Да, такими заплатками вполне можно отделаться - работать будет.
Жалко только красивый код портить, впрочем, если в отдельную функцию, то не стошнит.
Хотелось бы, конечно, более элегантное решение... | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 11:03)
| | Что за глупость я написал!
Конечно ничего так не получится!
Если мы имеем такую структуру директорий:
______________ROOT
_____________ /_____\
____________ A _____ B
__________________ / _\
_________________ C _ D
А скрипт рекурсивного обхода располагается в директории С, то он может попасть только в D
( ../D ), а ../../A
Уже не работает т. к. права у ROOT 700.
Мне получается надо класть в каждую поддиректорию свой отдельный скрипт? | |
|
|
|
|
|
|
|
для: Eugene77
(16.09.2008 в 09:18)
| | >скрипт рекурсивного обхода располагается в директории С, то он может попасть только в D
это не так
[поправлено модератором] | |
|
|
|
|
|
|
|
для: 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($f, strlen($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);
}
?>
|
| |
|
|
|