PHP не извлекает zip-файл в windows ER_OPEN - PullRequest
1 голос
/ 27 марта 2012

Я создаю установщик модуля для своей CMS, и я столкнулся с проблемой, теперь я использую Windows 7 x64 с установленным XAMPP x32,

По какой-то причине PHP возвращает код ошибки ER_OPEN (11), когдавсякий раз, когда я запускаю свой код и знаю, что директория доступна для записи, так как файл переходит к родителю по php, когда он загружен, вот мой скрипт

<code>if($_URL['form'] == 'sent'){
            $target_path = getcwd()."\\..\\Temp-uplds\\";
            $target_path = $target_path. time() . basename( $_FILES['installFile']['name']); 

            if(move_uploaded_file($_FILES['installFile']['tmp_name'], $target_path)) {
                $zip = new ZipArchive;
                $status = $zip->open('$target_path');
                if ($status === TRUE) {
                    $zip->extractTo(getcwd()."\\..\\Temp-uplds\\zip\\");
                    $zip->close();
                } else {
                    print_r(array($status, $zip));
                }
            } else{
                $this->tmp_vars->error = true;
            }

        }

        echo "<pre>error codes ZIPARCHIVE::ER_EXISTS = '".ZIPARCHIVE::ER_EXISTS."'
        File already exists.
        ZIPARCHIVE::ER_INCONS = '".ZIPARCHIVE::ER_INCONS."'
        Zip archive inconsistent.
        ZIPARCHIVE::ER_INVAL = '".ZIPARCHIVE::ER_INVAL."'
        Invalid argument.
        ZIPARCHIVE::ER_MEMORY = '".ZIPARCHIVE::ER_MEMORY."'
        Malloc failure.
        ZIPARCHIVE::ER_NOENT = '".ZIPARCHIVE::ER_NOENT."'
        No such file.
        ZIPARCHIVE::ER_NOZIP = '".ZIPARCHIVE::ER_NOZIP."'
        Not a zip archive.
        ZIPARCHIVE::ER_OPEN = '".ZIPARCHIVE::ER_OPEN."'
        Can't open file.
        ZIPARCHIVE::ER_READ = '".ZIPARCHIVE::ER_READ."'
        Read error.
        ZIPARCHIVE::ER_SEEK = '".ZIPARCHIVE::ER_SEEK."'
";

и мой заданный выводis

Array ( [0] => 11 [1] => ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 0 [filename] => [comment] => ) ) 

Любая помощь будет полезна

1 Ответ

3 голосов
/ 07 апреля 2012

У вас есть одинарные кавычки вокруг '$ target_path'. Переменная интерполяция работает только с двойными кавычками.

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

...