1

PHP exec()を使用して.tgzファイルを作成しようとしています。AJAX Webインターフェースで機能しますが、私のコードはファイルを作成しておらず、エラーも書き出していない。

このコードはシェルで機能します:

tar cvfz destination/testfolder.tgz source/testfolder

とはユーザー入力に基づいて変化するため、PHPで変数として設定しているdestination/testfolder.tgzのでsource/testfolder、コードは次のようになります。

$q=$_GET["q"];
$part = explode("/", $q);
$source = $q;
$dest = "destination/" .$part[1].".tgz";
exec("tar cvfz " . $dest . " " . $source);

をエコーし"tar cvfz " . $dest . " " . $source​​てシェルにコピー/貼り付けしましたが、これは機能するので、何が間違っているのか混乱しています。

4

1 に答える 1

1

問題は、@ Davidが述べたのと同じセキュリティ問題について、PHP exec()関数の権限が非常に制限されていることです。ファイルを作成することすらできません。一時的にでも非常に危険な777にファイルをchmodする代わりに、サンドボックスまたは無害な場所に一時フォルダーを作成し、PHPインタープリターのユーザー/グループのユーザー/グループにch所有することをお勧めします。やや制限のある権限(たとえば、ディレクトリの場合はchmod 700、内部のファイルの場合は600)。

于 2012-08-12T20:42:12.067 に答える