У меня есть машина Debian Squeeze с установленным PureFTP.
PureFTP имеет подчиненное средство, называемое Upload-Script. Этот инструмент можно настроить так, чтобы он вызывался после загрузки по FTP. Тем не менее, я не могу найти способ запустить этот скрипт ...
Я хочу, чтобы PureFTP выполнял PHP-скрипт после каждой загрузки.
Я настроил PureFTP следующим образом:
- Чтобы включить функцию UploadScript, у меня есть файл в / etc / pure-ftpd / conf с именем CallUploadScript с содержимым " да ".
- В / etc / default / pure-ftpd-common я сделал следующие настройки:
- UPLOADUID и UPLOADGID Я пытался установить его для UID / GID root и ftpuser - ни то, ни другое не сработало.
- Укажите путь к UPLOADSCRIPT , который будет вызываться после каждой загрузки.
Когда я перезагружаю ftp-сервер с помощью /etc/init.d/pure-ftpd restart - вывод будет следующим:
Restarting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -l pam -E -8 UTF-8 -O clf:/var/log/pure-ftpd/transfer.log -P *IP-REMOVED-FOR-PRIVACY* -A -Y 2 -o -u 1000 -p *PORT-RANGE-REMOVED-FOR-PRIVACY* -c 60 -d -X -B
Restarting ftp upload handler: pure-uploadscript.
Таким образом, PureFTP скомпилирован со всем материалом upload-script ...
Вот несколько шагов / вещей, которые я уже пробовал:
Я подумал, что, возможно, из-за PHP он не работает. Так что я
определил Shell-Script для выполнения тестового вывода в файл в
/ TMP-папка. Но после загрузки ничего не произошло - скрипт не был выполнен.
Изначально вызываемый скрипт находился в /opt/uploadscript/script.php
.
Поэтому я подумал, может быть, если я помещу сценарий в ту же веб-папку, куда ftpuser загружает что-то, это может сработать (возможно, из-за некоторых chroot-ограничений). Поэтому я поместил папку uploadscript в /var/www/vhost/domain.com/httpdocs/, которая является домашним каталогом пользователя ftp. Но все же - ничего счастливого после загрузки.
Чтобы убедиться, что это не ошибка в моем php-скрипте, я заменил оригинальный php-скрипт тестовым скриптом, который просто выводит тестовый файл, созданный с помощью touch (), с текущей датой в качестве имени файла. Сценарий оболочки, делающий то же самое, тоже не работал. Оба сценария, вызываемые из командной строки, работают отлично.
Есть ли у вас какие-либо предложения, что еще я мог бы попробовать или я что-то упустил?