Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Замена строки во всех файлах директории с неограниченным числом вложенных поддиректорий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2007
Помог: 0 раз(а)
Ребят, я новичок, поэтому такие вопросы:
В статье даны 2 кода.
Как код вызова функции scan_dir(), вызывает эту самую функцию?
Вернее я вообще не понимаю как связаны эти 2 кода. И в общем, у меня ничего не получилось... Не получилось произвести замену в файлах директории.
Я из 2 кода взял эти строчки
Во-вторых, указывать в качестве $dirname текущую директорию - дурная идея, т.к. сам скрипт содержит строку, которую надо заменить. Соответственно, файл скрипта будет перезаписан.
В-третьих, для того, чтобы PHP показывал ошибки, выстави в php.ini
display_errors = On
error_reporting = E_ALL
В php.ini у меня все стояло как надо. И действительно было глупым делать замену в текущей директории. Спасибо.
И почему блин, я ставлю на этом форуме тег [code], а он не работает? Что-то у меня все через ж...
И что за интересная функция file_put_contents ()? Искал в справочнике, не нашел.
Подумал, что может ошибка и надо писать file_get_contents (), но тогда вообще ничего не произошло. Да и точно это не file_get_contents ()... Здесь во второй раз она не к месту вроде...
evgenijj
Отправлено: 06 Июня, 2007 - 12:36:27
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Функции file_put_contents() и file_get_contents() доступны в PHP 4 >= 4.3.0, PHP 5. По видимому, у тебя более старая версия.
Тег [code] на этом форуме не работает - используй [php]
Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2007
Помог: 0 раз(а)
Что странно, но у меня PHP Version 4.4.4
Попробую обновить. И посмотреть результат.
evgenijj
Отправлено: 06 Июня, 2007 - 13:49:38
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
idimka пишет:
Что странно, но у меня PHP Version 4.4.4
Попробую обновить. И посмотреть результат.
Судя по строке
z:/home/test1.ru/www/g/zamena.php
у тебя стоит "Джентльменский набор Web-разработчика" http://www[dot]denwer[dot]ru/ Возможно, там урезанная версия PHP, которая не поддерживает некоторые функции. Но это только предположение...
Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2007
Помог: 0 раз(а)
Оказалось у меня полсеняя версия этого денвера, так что спрошу на их форуме.
evgenijj
Отправлено: 07 Июня, 2007 - 08:51:43
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
idimka пишет:
Оказалось у меня посленяя версия этого денвера, так что спрошу на их форуме.
Посмотрел сегодня на php.net
file_get_contents() доступна для PHP 4 >= 4.3.0, PHP 5
file_put_contents() доступна для PHP 5
Я почему-то думал, что эти функции появились в PHP одновременно. Так что первое предположение было верным - просто у тебя старая версия PHP.
P.S. Кстати, Денвер позволяет устанавливать пакеты расширений, в том числе и PHP5 http://www[dot]denwer[dot]ru/packages/php5[dot]html Только PHP5 ставится в виде внешней CGI-программы, а не в виде модуля Apache, как PHP4.
Кроме того, есть разновидность базового пакета Денвера — Base_PHP5. Дистрибутив содержит: Apache, PHP5, Perl, MySQL, phpMyAdmin, sendmail-заглушка, однако в нем нет PHP версии 4; вместо него — PHP5. Достоинство данного дистрибутива в том, что PHP5 работает в виде модуля Apache, а не в виде CGI-обработчика: http://www[dot]denwer[dot]ru/packages/base_php5[dot]html
Покинул форум
Сообщений всего: 14
Дата рег-ции: Июнь 2007
Помог: 0 раз(а)
Спасибо большое. Сменил денвер, все заработало.
Я ошибался, что у меня последняя версия. Просто начал качать ту версию, которая на главной странице, оказалась та же, что и у меня.
На их форуме мне тоже сказали, что file_put_contents() доступна в PHP 5.
Я блин ступил, не посмотрел. А скорее поленился...
Acuna
Отправлено: 27 Сентября, 2008 - 21:53:21
Гость
Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008
Помог: 0 раз(а)
Помогите! Я этот код использовал, но только вместо
Т. е. я пытался переместить все файлы из папки temp в папку $dirname2. Но это почему-то не работает! Heeelp!
----- The Lisalover
!!! I LOVE PHP !!!
Champion
Отправлено: 28 Сентября, 2008 - 07:56:25
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Функция copy копирует файл. Для переместить надо пользоваться функцией rename (Добавление)
Кроме этого в примере выше рекурсивно обходятся и все вложенные папки. У вас тогда в том каталоге, в которые перемщаете иерархия потеряется. Мне так кажется (Добавление)
И вообще, если Вам надо переместить, то, насолько мне кажется, функция rename перемещает и каталоги. И не обязательно залазить внутрь них
Elvis
Отправлено: 16 Декабря, 2009 - 14:25:16
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Дек. 2009
Помог: 0 раз(а)
Ребята вот так проще менять фразы или что хочешь
sed -i 's/pattern_OLD/pattern_NEW/g' templates/*.php
и все ))) или басш скрипт написать
EuGen
Отправлено: 18 Декабря, 2009 - 11:08:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Предупреждение за поднятие старой темы
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.