АРМАДА
Помогите разобраться со скриптом
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

m_Stasuk
Дизайнер
Зарегистрирован: 23.12.2007
Сообщений: 5967
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Пт Янв 14, 2011 10:57 pmДобавить в избранноеОтветить с цитатой
Есть вот такой скрипт массовой замены куска текста в файлах на сервере

Код:

<?
$work_dir="./";         
// рабочая директория - обязательно должна заканчиваться
// символом "/"
$excl_dir=array();
$excl_dir[0]="./no_work_here/";         
$excl_dir[1]="./and_here/and_here/";
// директории, где поиск/замена не производятся - обязательно должны заканчиваться
// символом "/"
$file_mask_1=".html?quot;;   
$file_mask_2=".js";
// маски обрабатываемых файлов (будут обработаны все файлы,
// содержащие данную строку в имени)
$search_str="test";    #что ищем
$replace_str="TEST";    #чем заменяем
//******************************************************
$level=0;
function sr($dir)
{
global $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;
echo "<b>";
for ($i=0;$i<$level;$i++) echo "* * ";
echo $dir."</b>";
if (@in_array($dir,$excl_dir))
{
echo " - needn't search & replace<br>";
return;
}
echo "<br>";
$p = dir($dir);
while($ent=$p->read())
{
if ($ent!="." && $ent!=".." && !is_dir($dir . $ent) && (eregi(sql_regcase($file_mask_1),$ent) || eregi(sql_regcase($file_mask_2),$ent)))
{
$tmp=@file($dir.$ent);
$str=@implode("",$tmp);
if (strpos("@!#%xrenoder^&*()".$str,$search_str))
{
for ($i=0;$i<($level)+1;$i++) echo "* * ";
echo $dir.$ent." found...";
$str=str_replace($search_str,$replace_str,$str);
if ($fp=@fopen($dir.$ent, "w"))
{
flock($fp,LOCK_EX);     
fwrite($fp,$str);
fclose($fp);
echo " and replace<br>";
}
else echo " and <b>can't replace</b><br>";
}
}
elseif($ent!="." and $ent!=".." and is_dir($dir . $ent))
{
$level++;
sr($dir.$ent."/");
$level--;
}
}
$p->close();
return;
}
sr($work_dir);
echo "SEARCH & REPLACE Complete";
?>



Я его тестил, он работает. Пробую запустить его на серваке, скрипт находит файлы, но не может сделать замену, пишет вот такую хрень

* * * * ./2010-02-19-247582/aktery-filma-lyubov-v-bolshom-gorode.php found... and can't replace
* * * * ./2010-02-19-247582/aktery-filma-lyubov-v-bolshom-gorode-2.php found... and can't replace
* * * * ./2010-02-19-247582/aktery-filma-lyubov-v-bolshom-gorode-3.php found... and can't replace
* * * * ./2010-02-19-247582/aktery-filma-lyubov-v-bolshom-gorode-1.php found... and can't replace

в чем проблема? Это что-то надо на серваке подправить?
Зарабатываю на рускамзе
Ростов-на-Дону

deBrain
V.I.P.
Зарегистрирован: 03.06.2010
Сообщений: 1569
Обратиться по нику
# Добавлено:Пт Янв 14, 2011 11:17 pmОтветить с цитатой
права на файлы в которых меняешь какие?
Правильно вкладываем свободные средства в ПАММ
Правильный хостинг: DigitalOcean

phillosof
ТопМастер
Зарегистрирован: 11.01.2009
Сообщений: 1632
Обратиться по нику
# Добавлено:Пт Янв 14, 2011 11:22 pmОтветить с цитатой
deBrain писал(а):
права на файлы в которых меняешь какие?



ага поставь 777, а если в целом работает, то выруби в htaccess error reporting.
Рецензии на фильмы

m_Stasuk
Дизайнер
Зарегистрирован: 23.12.2007
Сообщений: 5967
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Пт Янв 14, 2011 11:37 pmОтветить с цитатой
права на файлы 644. Если надо поставить другие, то скажите как массово менять права если файлы вложены в папки, а папки в другие папки Smile)) короче дерево там пипец
Зарабатываю на рускамзе
Ростов-на-Дону

m_Stasuk
Дизайнер
Зарегистрирован: 23.12.2007
Сообщений: 5967
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Сб Янв 15, 2011 12:16 amОтветить с цитатой
не актуально, сделал на локалке
Зарабатываю на рускамзе
Ростов-на-Дону
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры