0

私は問題があります。私は、実際にはzipアーカイブであると彼らが主張する.exeファイルを私に提供しているサービスを持っています。自己解凍アーカイブ。問題は、アプリ(php)でそれをサーバーにダウンロードしていて、ローカルコンピューターにダウンロードせずにそこに抽出する必要があることです。.exe ファイルをローカル コンピューターにダウンロードしようとしました。これは Windows で /temp ディレクトリに自己解凍し、FLASH プレーヤーを自己起動します。

$zip = zip_open($myfile); print_r($zip) で与えます: 1 zip->open も結果を返しません。.exe を .zip に変更すると、winzip やその他の Windows 上のアンパッカーで開くことができなくなります - .exe は winzip でも開くことができません。

今、私はそれに対処する方法がわかりません。アドバイスできる方いましたらお願いします。

4

4 に答える 4

2

システムコマンドを使用して、プログラムを実行可能ファイルとして実行してみてください

于 2011-06-28T09:21:53.623 に答える
1

100% 信頼できない外部ソースからファイルを実行することは、決して良い考えではありません。

zipのinfo-zipバージョンを使用すると、自己解凍型 zip ファイルから SFX スタブを削除して (-J フラグを使用)、通常の zip ファイルに戻すことができます。

ソースコードは自由に入手できます。

自己解凍型の zip ファイルを作成するには、zip ファイルの前に SFX バイナリ コードを追加し、バイナリ スタブのサイズを結果のファイルに追加します。ただし、データがどのように表現されているかはわかりませんが、少し利用可能なコードをリバースエンジニアリングすると、これが明確になります。

于 2011-06-28T09:35:11.577 に答える
0

まあ... PHPサーバーがWindowsの場合、システムコマンドとして問題なく実行できます。それ以外の場合は、もう少しトリッキーです。unzip システム コマンドは自己解凍型の zip ファイルを解凍すると聞きましたが、現時点では Linux ボックスにアクセスして試してみることができません。

共有ホスティングを使用している場合、それができない可能性があります。

于 2011-06-28T09:25:40.243 に答える
0

exeファイルを実行した後、その内容が抽出されると思われる場合は、exec関数を使用して、以下のような.exeファイルを実行できます。

exec("d:\\example\\php\_exe\\1436.exe");

system関数を使用して外部プログラムを実行することもできます。

また、何が違うのか疑問に思っている場合は、次のようにします。

PHP - exec() 対 system() 対 passthru()

于 2011-06-28T09:27:58.713 に答える