Редактирование файла скриптом

Статус
В этой теме нельзя размещать новые ответы.

antidote

Профессор
Регистрация
21 Янв 2008
Сообщения
167
Реакции
42
Есть два файла index.php и parser.php. Оба файла залиты на сервер мной, т.е. получается что у них один владелец. CHMOD на файлах стоит 644. Задача при запуске parser.php отредактировать index.php, конкретно заменить определенный текст в файле. Оба файла запускаются от имени apache. Но вот такой код не работает
Код:
$target = 'index.php';
error_reporting(E_ALL);
chmod($target, 0777);
$file = fopen($target, 'w+');
if($file)
	fwrite($file, $str);
fclose($file);
chmod($target, 0644);
include_once('index.php');
ошибок типа Operation not permitted для chmod не показывается. Просто белый лист. Что делать?
 
Ошибки могут не выводиться, т.к. скорее всего на сервере установлено error_reporting=0.
А не получается потому что владелец скриптов - ты, а запускает их apache. Если установишь chmod для index.php на 0777 через фтп, то должно заработать.
 
Да, при 777 работает. Но держать index.php с правами 777 постоянно идея наверное не лучшая. Может есть способ как-то решить эту проблему?

P.S. Тут вот впринципе промелькнула у меня идея чтоб скрипт создавал копию файла и перезаписывал index.php по ftp доступу. но это уже извращение наверно.
 
P.S. Тут вот впринципе промелькнула у меня идея чтоб скрипт создавал копию файла и перезаписывал index.php по ftp доступу. но это уже извращение наверно.

Так можно сделать, но если перезаписывать по фтп, значит данные от фтп будут храниться в файле - а это еще хуже, чем index.php с правами 777
 
Так можно сделать, но если перезаписывать по фтп, значит данные от фтп будут храниться в файле - а это еще хуже, чем index.php с правами 777

А кто сказал что данные сессии лежать в этом файле? Создаем в корне папку с правами 400, в нее ложим config в котором храним логин и пароль и в необходимый момент подключаем файл. Или где-то есть ошибка?
 
А кто сказал что данные сессии лежать в этом файле? Создаем в корне папку с правами 400, в нее ложим config в котором храним логин и пароль и в необходимый момент подключаем файл. Или где-то есть ошибка?
А что мешает злоумышленнику подключить этот файл? ;) Конечно, если он сможет сначала прочитать parser.php.
 
А что мешает злоумышленнику подключить этот файл? ;) Конечно, если он сможет сначала прочитать parser.php.
Именно. СНАЧАЛА получить доступ к какому-то скрипту на хостинге. Это уже отдельный разговор. Хотя сделал немного проще. Я через ftp сеанс меняю chmod файла на 777, быстро его перезаписываю, снова ставлю 644 и закрываю сеанс.
 
Да я к тому говорил, что одинаково не безопасно ставить chmod на index.php 777 и хранить пароли к фтп в скрипте.
 
Ну лучший вариант конечно будет завести .txt с правами 777, и в него parser'ом писать, а из index'а читать, и вставлять строки куда там тебе надо.

Если же тебе нужно, чтобы parser создавал именно выполняемый php-код, то имхо это по-любому будет несекурно, и поэтому абсолютно по фиг, то ли ты сохраняешь в тот же txt и из index'а его eval()'ишь, то ли ставишь 777 на сам индекс и редактируешь его напрямую (кстати некоторые хостеры могут не дать запускать php, если у него открыты права на запись для nobody).

Мне кажется через fopen("ftp://login:password@host/index.php") способ довольно безопасный. Пароли к mysql все всегда хранят в скрипте, и ничего.

Если можешь - заведи отдельный ftp-аккаунт и дай ему доступ только с localhost, это вообще решит все проблемы.
 
Да дело-то в том что как раз и надо редактировать php код. У меня есть доступ только к субдомену. Но на всем серваке завелась какая-то дрянь которая в файлы CMS пишет свои определенные строки. Ни перенести домен, ни сменить пароли и т.д. сейчас не представляется возможности, эта история затянется наверное на месяц. Вот и хочу парсить файл перед его загрузкой.
Ситауция вобще архинепонятная, но сайт надо как-то держать на плаву вот и выдумываю что попало. По сути хак как таковой имеет место быть. Сайт не мой, а кафедры. А там пока свяжешься с человеком который может чем-то помочь и пока он что-то сделает, уйма времени пройдет.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху