4

ここで質問を 1 つだけ見ましたが、私の質問には答えていません。Redhat Linux で最新の PHP 5 と MYSQL 5 を搭載した典型的な LAMP サーバーを実行しています。

ホストでシェルの使用が許可されていないため、PHP のみのソリューションを見つける必要があります。

これは、vBulletin のアップロードから別のディレクトリにパスワードが設定されていない ZIP を抽出する私のコードです。

if ($_GET['add'] == TRUE){
$zip = new ZipArchive;
 $res = $zip->open($SOURCE FOLDER);
 if ($res === TRUE) {
     $zip->extractTo('$DESTINATION FOLDER/');
     $zip->close();
     echo 'File has been added to the library successfuly';
     //Add a flag to that file to indicate it has already been added to the library.
     mysql_query("UPDATE attachment SET library = 1 WHERE filedataid='$fileid'");    
 } else {
     echo 'A uncompression or file error has occured';
 }}

確かに、PHPだけを使用してこれを行う方法があるに違いありません! ありがとうございました。

更新: ホストから、gzip はサーバーにインストールされているが 7-Zip はインストールされていないことが通知されました。シェルアクセスも検討しています。

4

2 に答える 2

6

スクリプトで 7zip 実行可能ファイルを使用できるようにし、それを呼び出して、system() 経由でパスワードを使用してファイルを解凍します。

$strCommandLine = "7z e fileToUnzip.7z -pTHEPASSWORD";
system($strCommandLine);

unzipホストにそれがインストールされている場合は、で同様のことができます。http://linux.about.com/od/commands/l/blcmdl1_unzip.htmを参照してください。

パスワード付きの -P をサポートしているため、次のようになります。

$strCommandLine = "unzip fileToUnzip.7z -P THEPASSWORD";
system($strCommandLine);

注意: 誰かがシステムで ps を実行し、unzip コマンドが実行されているのを見ると、そのコマンド ラインでパスワードが表示される可能性があります。

于 2012-12-23T18:35:00.027 に答える