apache, php, ubuntu

Логирование удаления файлов и директорий php

Иногда возникает проблема с исчезающими директориями и файлами, и встает вопрос как отловить какой же скрипт работает не верно и удаляет все подряд.

Внимание, для этого метода у вас должны быть права root на сервере.

И так, нам понадобится расширение apd

ставим

если не установлены пакеты autoconf gcc g++, ставим

apt-get install autoconf gcc g++

непосредственно установка apd

pecl install apd

подключаем его в php.ini, вместо /usr/local/zend/lib/php_extensions/ путь к библиотекам php, будет показан после установки apd в командной строке

zend_extension = /usr/local/zend/lib/php_extensions/apd.so
apd.dumpdir = /
apd.statement_tracing = 0
zend_optimizerplus.dups_fix=1

перезапускаем апач

/etc/init.d/apache2 restart

далее заходим в директорию с нашим сайтом и открываем .htaccess на редактирование и добавляем в него строку

php_value auto_prepend_file «/var/www/auto_prepend_file.php»

вместо /var/www/ выставляем корректный путь до файла auto_prepend_file.php содержание файла приведено ниже

создаем файл auto_prepend_file.php в корне сайта и вызываем его на редактирование
вносим в него следующий код

< ? override_function('unlink', '$del_file', 'return override_unlink($del_file);'); rename_function('__overridden__', 'new_unlink' ); function override_unlink($del_file){ $filename = 'unlink_log.txt'; $handle = fopen($filename, 'a'); fwrite($handle,$del_file."\n"); fwrite($handle,print_r(debug_backtrace(),true)); fclose($handle); // return new_unlink($del_file); } rename_function('rmdir', 'new_rmdir' ); override_function('rmdir', '$del_dir', 'return override_rmdir($del_dir);'); function override_rmdir($del_dir){ $filename = 'rmdir_log.txt'; $handle = fopen($filename, 'a'); fwrite($handle,$del_dir."\n"); fwrite($handle,print_r(debug_backtrace(),true)); fclose($handle); // return new_rmdir($del_dir); } ?>

сохраняем.

если вы все сделали верно, то отныне при попытки удалить файл или директорию информация о удалении будет занесена в лог ‘unlink_log.txt’ и ‘rmdir_log.txt’ соответственно, при этом физически ни файл ни папка не будут удалены.

удачи!

Tagged , , , , , , , , , ,

Добавить комментарий