3

PureFTP がインストールされた Debian Squeeze Machine があります。
PureFTP には Upload-Script というサブツールがあります。このツールは、FTP 経由でアップロードが行われた後に呼び出されるように構成できます。ただし、このスクリプトを実行する方法が見つかりません...

アップロードのたびに PureFTP に PHP スクリプトを実行させたい。
PureFTP を次のように構成しました。

  • UploadScript 機能を有効にするために、/etc/pure-ftpd/confに「 yes 」という内容のCallUploadScriptというファイルがあります。
  • /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のせいかなと思いました。そこで、/tmp-folder 内のファイルにテスト出力を作成するシェル スクリプトを定義しました。しかし、アップロード後に何も起こりませんでした。スクリプトは実行されませんでした。

  • もともと、呼び出されるスクリプトは
    /opt/uploadscript/script.php にあったので、ftpuser が何かをアップロードしているのと同じ Web フォルダー内にスクリプトを配置すれば、うまくいくかもしれないと思いました (chroot の制限のためかもしれません)。 . そこで、ftp ユーザーのホーム ディレクトリである /var/www/vhost/domain.com/httpdocs/ に、uploadscript フォルダーを配置しました。それでも - アップロード後に何も起こりません。

  • 私のphpスクリプトのバグではないことを確認するために、元のphpスクリプトを、touch()で作成されたテストファイルを現在の日付をファイル名として出力するだけのテストスクリプトに置き換えました。同じことを行うシェルスクリプトも機能しませんでした。コマンドラインから直接呼び出される両方のスクリプトは完全に機能します。

他に何を試すことができますか、それとも重要なものが欠けていますか?

4

1 に答える 1

0

pure-uploadscript を手動で起動して動作させました。標準の 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 に答える