3

我有一台安装了 PureFTP 的 Debian Squeeze Machine。
PureFTP 有一个名为 Upload-Script 的子工具。此工具可以配置为在通过 FTP 完成上传后调用。但是,我找不到让这个脚本运行的方法......

我希望 PureFTP 在每次上传后执行 PHP 脚本。
我已将 PureFTP 配置如下:

  • 为了启用 UploadScript-Functionality,我在 /etc/pure-ftpd/conf 中有一个名为 CallUploadScript 的文件内容为“ yes ”。
  • 在 /etc/default/pure-ftpd-common 我做了以下设置:
    • UPLOADUIDUPLOADGID我尝试将其设置为 root 和 ftpuser 的 UID/GID - 两者都不起作用。
    • 设置每次上传后要调用的UPLOADSCRIPT的路径。

当我使用 /etc/init.d/pure-ftpd restart 重新启动 ftp 服务器时 - 输出如下:

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 是用整个上传脚本的东西编译的......

这是我已经尝试过的一些步骤/事情:

  • 我认为可能是因为 PHP 无法正常工作。所以我定义了一个 Shell 脚本来对 /tmp-folder 中的文件进行测试输出。但是上传后什么也没发生——脚本没有执行。

  • 最初,要调用的脚本位于 /opt/uploadscript/script.php
    所以我想,也许如果我将脚本放在 ftpuser 上传内容的同一个 web 文件夹中,它可能会起作用(可能是因为某些 chroot 限制) . 所以我把uploadscript-folder放到/var/www/vhost/domain.com/httpdocs/这是ftp用户的主目录。但仍然 - 上传后没有任何事情发生。

  • 为了确保它不是我的 php-script 中的错误,我将原始 php-script 替换为 testscript,它只输出使用 touch() 创建的 testfile,并将当前日期作为文件名。执行相同操作的 shell 脚本也不起作用。从命令行调用的两个脚本都可以直接完美运行。

你有什么建议吗,我还能尝试什么,或者我什至错过了一些重要的东西?

4

1 回答 1

0

我已经通过手动启动纯上传脚本让它工作了。带有标准 apt-get 安装的 Debian Squeeze。

该文档对执行顺序非常具体(但您似乎拥有该权利):“您必须先启动 PURE-FTPD ,然后再启动 PURE- UPLOADSCRIPT。相反的顺序将不起作用。”

我有 uid:1004 和 gid:1005 然后我像这样启动上传脚本(在纯 ftp 服务器运行之后):

纯上传脚本 -u 1004 -g 1005 -B -r testToSyslog.sh

但是,在开始使用上传脚本后,我遇到了另一个问题 - 似乎 /etc/init.d 脚本在使用上传脚本时无法正确生成 pid。我还没有找到根本原因。但迹象在这里:

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

于 2012-01-31T10:27:56.323 回答