PureFTP がインストールされた Debian Squeeze Machine があります。
PureFTP には Upload-Script というサブツールがあります。このツールは、FTP 経由でアップロードが行われた後に呼び出されるように構成できます。ただし、このスクリプトを実行する方法が見つかりません...
アップロードのたびに PureFTP に PHP スクリプトを実行させたい。
PureFTP を次のように構成しました。
- UploadScript 機能を有効にするために、/etc/pure-ftpd/confに「 yes 」という内容のCallUploadScriptというファイルがあります。
- /etc/default/pure-ftpd-common で、次の設定を行いました。
- UPLOADUIDとUPLOADGID 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()で作成されたテストファイルを現在の日付をファイル名として出力するだけのテストスクリプトに置き換えました。同じことを行うシェルスクリプトも機能しませんでした。コマンドラインから直接呼び出される両方のスクリプトは完全に機能します。
他に何を試すことができますか、それとも重要なものが欠けていますか?