これが可能かどうかは不明ですが、今は学問的な闘争になっています。 PHPファイル内のバイナリデータを埋め込むこと__halt_compiler()
トリックを使用しPHP zip_open()とphp:// tempは開くことができません
、私は正常にfseek()
__COMPILER_HALT_OFFSET__
に
とにかく、私は私がしようとした何__halt_compiler()
に私の呼び出しの後である(「Hello World」の言う単一のファイルを含む単一のフォルダが)バイナリZIPデータの小さな塊を保存しましたデータを直接にコピーしてください(I rewind()
とpassthru()
一時的なストリームハンドルが、それはデータをダンプする場合)10流れ、そして成功して行っている
$php = fopen(__FILE__, 'rb');
$tmp = fopen('php://temp', 'r+b');
fseek($php, __COMPILER_HALT_OFFSET__);
stream_copy_to_stream($php, $tmp);
私の問題はzip_open()
php://temp
しようとしていますそのような他のPOSSにもかかわらず、私が見ることができるものから、 $zip = zip_open('php://temp');
(
zip_open()
でストリームサポートが不足しているとして)、ここでの問題は、ハンドル間のphp://memory
とphp://temp
ストリームのデータの固有の非永続性です。これを回避することができれば、おそらく実際には可能です。それは戻って、私は(一見、他のほとんどのエラーコードのような)になし 文書を発見したエラーコード11
、var_dump($zip); // int(11)
を蹴り続ける
@cweiskeが指摘したように、エラーコード
11 = ZipArchive::ER_OPEN
、ファイルを開けません
この結果、php://temp
ストリームを使用しようとする私の試みやその他の問題がありますか?私はOOPアプローチ(ZipArchive
など、)が存在することも知っていますが、私は基本から始めると思いました。
アイデア?
エラーコード** 11 **は**エラーオープンです** http://www.php.net/manual/en/function.ziparchive-open.php#102849によると、ZipArchive 'クラス。私は、クラスが同じ拡張機能のラッパーになるため、これが翻訳されていると仮定します。 – Dan
以前にリンクされたコメントでは、さまざまなWindows OS上で、 'c:\ windows \ temp'に格納されたファイルを解凍しようとしたときに返されたエラーについても言及しています。データ長が上限を超えたファイル、そこには存在しないと思いますが、私は 'php:// memory'に切り替えてしまいましたが、まだ**エラーが発生しています**。 – Dan
ありがとう@Gordon - *編集*;いいえ書いて、実際には読書だけ。 – Dan