치명적인 오류 : 'ZipArchive'클래스를 찾을 수 없습니다.


181

Linux 서버에 'Archive_Zip 0.1.1'을 설치하는 데 문제가 있지만 zip 파일을 만들기 위해 스크립트를 실행하려고하면 치명적인 오류가 발생합니다.

치명적인 오류 : 클래스 ZipArchive를 찾을 수 없습니다 ...

내가 코드를 넣은 곳

$zip = new ZipArchive;
var_dump($zip);
$res = $zip->open($filename, ZipArchive::OVERWRITE);
if ($res !== TRUE) {
    echo 'Error: Unable to create zip file';
    exit;
}
if (is_file($src)) {
    $zip->addFile($src);
} else {
    // echo "<br>" . dirname(__FILE__) . $src;//'/install1';
    if (!is_dir($src)) {
         $zip->close();
         @unlink($filename);
         echo 'Error: File not found';
         exit;
    }
    recurse_zip($src, $zip, $path_length);
}
$zip->close();
echo "<br>file name ".$filename;

그러나 클래스 파일을 찾지 못했습니다.

해결책을 알려주세요. 문제를 해결하려면 어떻게해야합니까? php.ini스크립트가있는 폴더 에 파일을 넣었 지만 작동하지 않습니다.


7
우분투 사용에sudo apt-get install php7.2-zip
에릭 코롤 레프

1
@EricKorolev이주고 E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'PHP 7.2와 우분투 14.04를 사용하여
무하마드 오메르 빈 라덴

1
데비안 10에서는 간단 apt-get install php-zip합니다.
10

이 게시물을 볼 수 있습니다 : stackoverflow.com/a/60482998/4806585
VishalParkash

답변:


207

를 들어 ZipArchive클래스가 존재하는 것으로, PHP는 있어야 우편 확장이 설치되어 있어야합니다.

설치 지침 은 이 페이지 를 참조하십시오 (Linux 및 Windows 모두).


1
아마도 내가하는 일을 이해할 수 없을 것입니다. 나는 당신이 연구를 위해 제공 한 잉크에 주어진 예제를 사용하고 스크립트를 완성합니다. 서버가 아닌 내 PC (localhost)에서 제대로 작동합니다. 그것에 대해 제안하십시오
Parag Chaure

49
apt-get을 사용하는 우분투 서버에서sudo apt-get install php7.0-zip
Luddig

9
간단한 해결책 : sudo apt-get install php7.0-zip. 그런 다음 파일을 편집하십시오 /etc/php/7.0/cli/php.ini( "Dynamic Extensions"섹션에서 행을 추가하십시오 extension=zip.so). 이 문제를 해결해야합니다
JonyD

21
Docker의 경우docker-php-ext-install zip
David Riccitelli

11
우분투 서버에서 @Luddig가 언급 한 것처럼 sudo apt-get install php7.0-zip아파치 서버를 다시 시작해야합니다sudo systemctl restart apache2
hashmi

82

Ubuntu + nginx + php7이있는 Amazon ec2에서 동일한 문제가 발생하여 다음을 사용하여 해결했습니다.

sudo apt-get install php7.0-zip


후 할 걱정하지 ... php7.0-XSL 문제를 가지고 설치 apt-get을 바로 apt-get을 설치 해결하기 위해 php7.0을-ZIP
bortunac

sudo apt-get install php7.1-zip우분투 / php7.1
니노 Škopac

이것은 작동하지 않으며 php 7.2항상 말합니다E: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam

39

우분투 데스크탑에서해야했습니다.

sudo apt-get install php5.6-zip

이것은 라이브러리를 설치했지만 여전히 같은 오류가 계속 발생하므로 다음을 사용하여 아파치를 다시 시작해야했습니다.

sudo service apache2 restart

그리고 효과가있었습니다.


1
@pekka의 솔루션과 결합했을 때 다시 시작하는 아파치가 그것을 수행했습니다
gthuo

18

우선, 원격 서버를위한 솔루션 :

cpanel 을 사용하는 경우 Zip 확장이 설치되었지만 활성화되지 않은 것일 수 있습니다. 활성화해야합니다. 이 경우 cpanel> 소프트웨어 내부 섹션 으로 이동하여 PHP 버전을 클릭 해야합니다 . 그런 다음 우편 번호를 찾아서 확인하십시오. 이제 저장하십시오.

이미지처럼 보일 것입니다. 여기에 이미지 설명을 입력하십시오

페이지를 새로 고칩니다. 오류가 사라져야합니다.

참고 : 찾지 못한 경우 서버 제공 업체에 문의하십시오. 그들은 당신을 위해 설치됩니다.


이것은 나를 위해 일했습니다. 템플릿 빌더를 사용하고 있었고 내 보내지 않았습니다. 우편함 확인란을 선택하고 저장했습니다. 감사합니다 Kaylan
Hblegg

16

여기에 표시되지 않으므로 Debian / Ubuntu 에서 상대 패키지를 설치 한 후 확장 기능 을 활성화 해야 할 수도 있습니다 . 그래서:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart

2
php7.0-zipPHP 7을 설치하십시오
AnthonyB

아파치 재시작을 잊지 마십시오!
zzapper

1
PHP 7.1 용 php7.1-zip, PHP 7.2 용 php7.2-zip을 설치하십시오.
Neo

6

사용 가능한 WHM이 있으면 더 쉽습니다.

WHM에 로그인하십시오 .

소프트웨어 탭 에서 EasyApache 4 (또는 사용중인 모든 버전)로 이동 하십시오.

현재 설치된 패키지에서 사용자 정의를 클릭하십시오 .

검색 유형 " zip "( 따옴표없이 ) 에서 PHP Extensions로 이동하십시오 .

3 개의 모듈이 보일 것입니다

모두 확인하고

프로세스를 마치려면 파란색 버튼을 몇 번 클릭하십시오.

이것은 나를 위해 일했습니다. 고맙게도 WHM을 사용할 수 있습니다.


5

이것은 효과가 있었다

apt-get install php7.0-zip

php7.0-fpm수동으로 다시 시작할 필요가 없습니다 .

포장 풀기 php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1...)
에 대한 처리 트리거 php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm정지 / 대기
php7.0-fpm시작 / 실행, 프로세스를 1572
php7.0-fpm정지 / 대기
php7.0-fpm시작 / 실행, 프로세스를 1777을
설정 php7.0-zip( 7.0.16-4+deb.sury.org~trusty+1) ...
설정할 수 없습니다 : 로케일 LC_ALL디폴트 로케일로 : 해당 파일 또는 디렉토리

만들기 설정 파일 /etc/php/7.0/mods-available/zip.ini의 새로운 버전에
대한 처리 트리거 php7.0-fpm( 7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm정지 / 대기
php7.0-fpm시작 / 실행, 프로세스를 2354
php7.0-fpm정지 / 대기
php7.0-fpm시작 / 실행, 프로세스를 2397


4

또한 zip을 지원하는 PHP를 컴파일해야합니다. 매뉴얼은 다음과 같이 말합니다.

이러한 기능을 사용하려면 --enable-zip configure 옵션을 사용하여 zip을 지원하는 PHP를 컴파일해야합니다.

서버에 올바른 확장을 설치하는 것만으로는 충분하지 않습니다. Pekka가 이전에 게시 한 설치 지침 링크를 살펴보십시오. 내 대답은 단지 그의 설명입니다.


예, 그러나 PHP에서 zip을 지원하도록 서버에서이 명령을 어디에서 실행해야합니까
Parag Chaure

제어하는 서버입니까? 그렇다면 PHP를 설치할 때 make 명령의 일부라고 생각합니다. 제어하는 서버가 아닌 경우 시스템 관리자가 수행하도록하는 유일한 옵션입니다. 더 정확하게 말할 수 없어서 죄송합니다. 처음부터 Linux 서버에 PHP를 설치 한 적이 없습니다.
Jeremy

4

CentOScPanel 설치 서버 와 동일한 문제가있었습니다 . cPanel을 통해 zipArchive 패키지를 설치했지만 예상대로 작동하지 않았습니다. 너무 많은 수정을 시도한 후에 각각 아래에 제안 된 모든 수정 사항이 저에게 효과적이었습니다.

먼저 아래 명령으로 올바른 패키지의 이름을 찾으십시오.

yum search zip |grep -i php

그런 다음 아래 코드를 사용하십시오.

yum install your_zip_package_name_with_php_version

필자의 경우 zipArchive를 설치하는 올바른 코드는

yum install php-pecl-zip.x86_64

이 링크에서 해결책을 얻었습니다. CentOS 7을 사용하여 PHP 7.2에서 zipArchive를 설치하는 방법은 무엇입니까?

그리고이 설치는 어떻게 든 패키지를 가능하게했으며 영향을받는 서비스를 다시 시작했으며 위의 코드 zipArchive 문제가 완료 된 후 사라졌습니다.


4

센 토스 6

yum install php-pecl-zip

service httpd restart

1
감사합니다. php-pecl-zip을 설치했지만 httpd를 다시 시작하지 않았습니다. 마침내 답을 찾았습니다!
Ngoc Nam

4

PHP 7.x의 경우

sudo apt-get install php-zip

PHP 5.x의 경우

sudo apt-get install php5.x-zip
// (for example sudo apt-get install php5.6-zip)

그런 다음 Apache 서버를 다시 시작하십시오.

sudo service apache2 restart

3

PHP 5.2.0 이상

리눅스 시스템

이러한 기능을 사용하려면 --enable-zip configure 옵션을 사용하여 zip을 지원하는 PHP를 컴파일해야합니다.

윈도우

Windows 사용자는 이러한 기능을 사용하려면 php.ini 내부에서 php_zip.dll을 활성화해야합니다.


3

App Engine Standard 환경에서 wordpress를 배포하는 동안 GCP에서이 문제에 직면했습니다. 이것은 그것을 해결했다 :

sudo apt-get install php7.2-zip

1

Remi의 Centos 7 및 PHP 7.3

zip 확장자를 검색하십시오.

$ yum search php73 | grep zip
php73-php-pecl-zip.x86_64 : A ZIP archive management extension

확장명은 php73-php-pecl-zip.x86_64 입니다. 단일 버전의 PHP를 실행하는 서버에 설치하려면 접두사 php73을 제거하십시오.

$ sudo yum --enablerepo=remi-php73 install php-pecl-zip #for server running single PHP7.3 version
$ #sudo yum --enablerepo=remi-php73 install php73-php-pecl-zip # for server running multiple PHP versions

PHP를 다시 시작하십시오 :

$ sudo systemctl restart php-fpm

설치된 PHP 확장을 확인하십시오.

$ php -m
[PHP Modules]
apcu
bcmath
bz2
...
zip
zlib

1

CentOS 기반 서버 사용

yum install php-pecl-zip.x86_64

다음을 실행하여 활성화하십시오. echo "extension=zip.so" >> /etc/php.d/zip.ini


0

나는 같은 문제가 있었고 두 개의 명령 줄을 사용하여 해결되었습니다.

sudo apt install php-zip

그런 다음 Apache를 위해 웹 서버를 재부팅하십시오.

sudo service apache2 restart



0

PHP 버전을 확인해야합니다

PHP 버전이 5.6이면 php5.7-zip을 설치해야합니다.

sudo apt-get install php5.6-zip

그리고

sudo service apache2 restart

그것이 도움이되기를 바랍니다.


-13

1) require파일이있는 ZipArchive파일 이어야 합니다 .

require 'path/to/file/ZipArchive.php';

2) 또는 __autoload수업 방법을 사용하십시오 . PHP 5에서는 훌륭한 메소드 __autoload ()입니다.

function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1(); // creating an object without require.

http://www.php.net/manual/en/language.oop5.autoload.php


ZipArchive 파일을 어떻게 포함 시키거나 요구해야합니까?
Parag Chaure
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.