PHP zip_open () и php: // temp, похоже, не открывается

Не уверен, возможно ли это, но сейчас это превратилось в академическую борьбу.

Используя трюк __ halt_compiler () для встраивания двоичных данных в файл PHP, я успешно создал самооткрывающийся скрипт, который будет fseek () в __ COMPILER_HALT_OFFSET __ ( нетрудно заметить, поскольку этот точный пример задокументирован в руководстве )

В любом случае, я сохранил небольшой кусок двоичных данных ZIP ( в одной папке, содержащей один файл с надписью "hello world" ) после моего вызова __ halt_compiler ()

Я пытался скопировать данные непосредственно в поток php: // temp и получить выполнено успешно ( если я rewind () и passthru () дескриптор временного потока, он сбрасывает данные )

$php = fopen(__FILE__, 'rb');
$tmp = fopen('php://temp', 'r+b');
fseek($php, __COMPILER_HALT_OFFSET__);
stream_copy_to_stream($php, $tmp);

Моя проблема связана с попыткой к n ow open php: // temp 1 с zip_open ()

$zip = zip_open('php://temp');

1 Из того, что я вижу (, несмотря на другие такие возможности, как отсутствие поддержки потока с zip_open () ) проблема здесь в присущей нестабильности данных в потоках php: // memory и php: // temp между дескрипторами. Если это можно обойти, возможно, это действительно возможно.

Он продолжает отбрасывать код ошибки 11 , который я нашел нет 2 документации по (, похоже, как и большинство других возможных кодов ошибок )

var_dump($zip); // int(11)

2 Как указал @cweiske, код ошибки 11 = ZipArchive :: ER_OPEN , Невозможно открыть файл

Является ли это следствием моей попытки использования потока php: // temp или другой возможной проблемы? Я также знаю, что существует подход ООП ( ZipArchive и др. ), но я решил начать с основ.

Есть идеи?

6
задан Dan Lugg 2 August 2011 в 19:36
поделиться