Вы, вероятно, хотите что-то, что зарегистрирует события файловой системы с inotify. Возможно, что-то как logsend. Также посмотрите inotify-инструменты.
Я знаю, что этот вопрос имеет принятый ответ, но самый чистый способ сделать это должно было бы использовать потоковый фильтр шифрования. Страница на руководстве PHP имеет полное изложение, таким образом, я не копирую кода здесь, но это, кажется, самый простой способ достигнуть этого. Вы присоединяете потоковый фильтр к ресурсу дескриптора файла, и данные прозрачно зашифрованы или дешифрованы, поскольку это считано из или записано в файл. Лучший из всего этого пользуется mcrypt библиотекой, чтобы сделать все это.
Править
Вероятно, самое чистое (и более универсальный/поддерживающий) опция состояла бы в том, чтобы пользоваться библиотекой Zend_File_Transfer (можно пользоваться отдельными библиотеками Платформы Зенда самостоятельно или в комбинации, если Вы не знакомы с нею).
А именно, взгляните на Фильтры для lib Zend_File_Transfer. Это использует MCrypt, поскольку это - фильтры шифрования/дешифрования (и имеет много других must-have/nice-to-have функций как переименование, индикатор выполнения, и т.д.).
Я использовал его для основной загрузки прежде, и это работает отлично.
Если цепочка file_get_contents-> mcrypt_encrypt-> mcrypt_decrypt-> file_put_contents не работает над файлами PDF (почему не должен быть), можно ли все еще рассматривать ее как двоичные данные, не текст.
Или более систематическим способом используйте EncFS и создайте зашифрованную точку монтирования и храните документы там.