私は、バックアップしたもののリストから、選択したファイルを含むzipファイルをダウンロードできるWebバックアップサービスの作業を進めています。PHPのshell_execによるファイルの圧縮:パスの問題
zipプロセスは、shell_execコマンドで実行されます。これを動作させるために、私はapacheユーザにzipコマンドに対するno-password sudo権限を与えました。
私の問題は、ユーザーのバックアップファイルが格納されているフォルダに "sudo cd/path/to/user/files"を実行できないためです。圧縮するファイルへの完全な絶対パスを指定する必要があります。私が望んでいないzipファイルに入ります。
は、ここで私が何を意味するかです:
ユーザー、 'test1のは、' 自分のファイルが
/ホーム/バックアップ/ test1の/私の写真/ pic1.jpg
/ホーム/バックアップを次のように保存されているバックアップしています/ test1の/私の写真/ pic2.jpg
/ホーム/バックアップ/ test1の/私の写真/ pic3.jpg
/ホーム/バックアップ/ test1の/音楽/バンド/歌/home/backups/test1/hello.txt .mp3
これらのファイルが圧縮されると、完全なパスが保持されます私はちょうどそれが表示する:
私の写真/ pic1.jpg
私の写真/ pic2.jpg
私の写真/ pic3.jpg
hello.txt
音楽/バンド/ song.mp3
zipにパスを切り捨てるように指示する方法や、各ファイルのカスタムパスを指定する方法はありますか?
作業ディレクトリをユーザーのルートバックアップフォルダに変更できる方法があるので、相対ファイルパスを指定するだけで済みます。
読んでいただきありがとうございます、あなたがこれを遠くに持っていれば幸いです。
PHPは、ユーザのファイルを持つディレクトリにアクセスできないApacheユーザを使用します。私は "sudo zip ..."を使って圧縮を行いますが、 "sudo cd/path/to/folder"は実行できません。 – Nick
ああ、それほど良いことではない:( – Greg