PureFTP: чистый загрузочный скрипт не работает - PullRequest
3 голосов
/ 08 января 2012

У меня есть машина 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 (), с текущей датой в качестве имени файла. Сценарий оболочки, делающий то же самое, тоже не работал. Оба сценария, вызываемые из командной строки, работают отлично.

Есть ли у вас какие-либо предложения, что еще я мог бы попробовать или я что-то упустил?

1 Ответ

0 голосов
/ 31 января 2012

У меня получилось, запустив pure-uploadscript вручную. Debian Squeeze со стандартной установкой apt-get.

Документация очень конкретно описывает порядок исполнения (но у вас, похоже, есть это право): "ВЫ ДОЛЖНЫ НАЧАТЬ PURE-FTPD FIRST и THEN НАЧАТЬ PURE-UPLOADSCRIPT. ОБРАТНЫЙ ЗАКАЗ НЕ РАБОТАЕТ. "

У меня uid: 1004 и gid: 1005, затем я запускаю скрипт загрузки следующим образом (после запуска сервера чистого ftp):

pure-uploadscript -u 1004 -g 1005 -B -r testToSyslog.sh

Однако после начала использования сценария загрузки у меня возникли другие проблемы. Кажется, есть проблема с сценарием /etc/init.d, который неправильно генерирует pids при использовании сценария загрузки. Я еще не нашел основную причину. Но показания здесь:

http://forums.gentoo.org/viewtopic-t-884904-start-0.html

...