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

Тема в разделе "PHP", создана пользователем antidote, 13 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. antidote

    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 не показывается. Просто белый лист. Что делать?
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Ошибки могут не выводиться, т.к. скорее всего на сервере установлено error_reporting=0.
    А не получается потому что владелец скриптов - ты, а запускает их apache. Если установишь chmod для index.php на 0777 через фтп, то должно заработать.
     
  3. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    Да, при 777 работает. Но держать index.php с правами 777 постоянно идея наверное не лучшая. Может есть способ как-то решить эту проблему?

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

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Так можно сделать, но если перезаписывать по фтп, значит данные от фтп будут храниться в файле - а это еще хуже, чем index.php с правами 777
     
  5. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    А кто сказал что данные сессии лежать в этом файле? Создаем в корне папку с правами 400, в нее ложим config в котором храним логин и пароль и в необходимый момент подключаем файл. Или где-то есть ошибка?
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    А что мешает злоумышленнику подключить этот файл? ;) Конечно, если он сможет сначала прочитать parser.php.
     
  7. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    Именно. СНАЧАЛА получить доступ к какому-то скрипту на хостинге. Это уже отдельный разговор. Хотя сделал немного проще. Я через ftp сеанс меняю chmod файла на 777, быстро его перезаписываю, снова ставлю 644 и закрываю сеанс.
     
  8. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Да я к тому говорил, что одинаково не безопасно ставить chmod на index.php 777 и хранить пароли к фтп в скрипте.
     
  9. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Ну лучший вариант конечно будет завести .txt с правами 777, и в него parser'ом писать, а из index'а читать, и вставлять строки куда там тебе надо.

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

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

    Если можешь - заведи отдельный ftp-аккаунт и дай ему доступ только с localhost, это вообще решит все проблемы.
     
  10. antidote

    antidote

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