Phar 소개

phar 확장은 전체 PHP 애플리케이션을 쉬운 배포 및 설치를 위해 "phar"(PHP 아카이브)라는 단일 파일에 넣는 방법을 제공합니다. 이 서비스를 제공하는 것 외에도 phar 확장은 PDO가 다른 데이터베이스에 액세스하기 위한 통합 인터페이스를 제공하는 것처럼 PharData 클래스를 통해 tar 및 zip 파일을 만들고 조작하기 위한 파일 형식 추상화 메소드도 제공합니다. 서로 다른 데이터베이스 간에 변환할 수 없는 PDO와 달리 Phar는 한 줄의 코드로 tar, zip 및 phar 파일 형식 간에 변환할 수도 있습니다. 한 가지 예는 Phar::convertToExecutable()을 참조하십시오.

phar란 무엇입니까? Phar 아카이브는 여러 파일을 단일 파일로 그룹화하는 편리한 방법으로 가장 잘 특징지어집니다. 따라서 phar 아카이브는 단일 파일에 완전한 PHP 애플리케이션을 배포하고 디스크에 압축을 풀 필요 없이 해당 파일에서 실행할 수 있는 방법을 제공합니다. 또한 phar 아카이브는 명령줄과 웹 서버 모두에서 다른 파일처럼 쉽게 PHP로 실행할 수 있습니다. Phar는 PHP 애플리케이션용 thumb 드라이브와 같습니다.

Phar는 스트림 래퍼를 통해 이 기능을 구현합니다. 일반적으로 PHP 스크립트 내에서 외부 파일을 사용하려면 include을 사용합니다.

예제 #1 외부 파일 사용

                  
<?php
include '/path/to/external/file.php';
?>
                  
                

PHP는 실제로 /path/to/external/file.phpfile:///path/to/external/file.php와 같은 스트림 래퍼로 변환하는 것으로 생각할 수 있으며 후드 아래에서는 실제로 일반 파일을 사용합니다. 스트림 래퍼 스트림 함수는 모든 로컬 파일에 액세스합니다.

phar 아카이브 /path/to/myphar.phar에 포함된 file.php라는 파일을 사용하기 위해 구문은 위의 file:// 구문과 매우 유사합니다.

예제 #2 phar 아카이브 내에서 파일 사용

                  
<?php
include 'phar:///path/to/myphar.phar/file.php';
?>
                  
                

사실, fopen() 관련 함수, opendir()mkdir() 관련 함수를 사용하여 phar 아카이브를 외부 디스크인 것처럼 취급할 수 있습니다. 파르 아카이브. 이를 통해 완전한 PHP 애플리케이션을 단일 파일에 배포하고 해당 파일에서 직접 실행할 수 있습니다.

phar 아카이브의 가장 일반적인 용도는 전체 애플리케이션을 단일 파일에 배포하는 것입니다. 예를 들어, PHP 버전과 함께 번들로 제공되는 PEAR 설치 프로그램은 phar 아카이브로 배포됩니다. 이러한 방식으로 배포된 phar 아카이브를 사용하려면 명령줄이나 웹 서버를 통해 아카이브를 실행할 수 있습니다.

Phar 아카이브는 tar 아카이브, zip 아카이브 또는 phar 확장을 위해 특별히 설계된 사용자 정의 phar 파일 형식으로 배포할 수 있습니다. 각 파일 형식에는 장점과 단점이 있습니다. tar 및 zip 파일 형식은 형식을 읽을 수 있는 타사 도구로 읽거나 추출할 수 있지만 PHP와 함께 실행하려면 phar 확장자가 필요합니다. phar 파일 형식은 사용자 지정되고 phar 확장자에 고유하며 phar 확장자 또는 PEAR 패키지 » PHP_Archive로만 생성할 수 있지만 이 형식으로 생성된 애플리케이션은 phar 확장자가 사용 설정되지 않은 경우에도 실행된다는 이점이 있습니다.

즉, phar 확장이 비활성화된 경우에도 phar 기반 아카이브를 실행하거나 포함할 수 있습니다. phar 아카이브 내에서 개별 파일에 액세스하는 것은 phar 아카이브가 PHP_Archive에 의해 생성되지 않는 한 phar 확장자를 통해서만 가능합니다.

phar 확장은 또한 단일 명령으로 phar 아카이브를 tar에서 zip 또는 phar 파일 형식으로 변환할 수 있습니다.

예제 #3 phar 아카이브를 phar에서 tar 파일 형식으로 변환

                  
<?php
$phar = new Phar('myphar.phar');
$pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // makes myphar.phar.tar.gz
?>
                  
                

Phar는 gzip 압축 또는 bzip2 압축을 사용하여 개별 파일 또는 전체 아카이브를 압축할 수 있으며 MD5, SHA-1, SHA-256 또는 SHA-512 서명을 사용하여 아카이브 무결성을 자동으로 확인할 수 있습니다.

마지막으로 Phar 확장은 보안을 고려하며 기본적으로 실행 가능한 phar 아카이브에 대한 쓰기 액세스를 비활성화하고 phar 아카이브를 생성하거나 수정하려면 시스템 수준에서 phar.readonly php.ini 설정을 비활성화해야 합니다. 실행 가능한 스텁이 없는 일반 tar 및 zip 아카이브는 항상 PharData 클래스를 사용하여 생성하거나 수정할 수 있습니다.

배포용 애플리케이션을 생성하는 경우 Phar 아카이브 생성 방법을 읽고 싶을 것입니다. phar가 지원하는 세 가지 파일 형식 간의 차이점에 대한 자세한 내용을 보려면 Phar, Tar 및 Zip을 읽어야 합니다.

phar 애플리케이션을 사용하는 경우 Phar 아카이브 사용 방법에 유용한 팁이 있습니다.

phar라는 단어는 PHP와 Archive의 합성어로 Java 개발자에게 친숙한 jar(Java Archive)에 느슨하게 기반을 두고 있습니다.

Phar 아카이브의 구현은 PEAR 패키지 » PHP_Archive를 기반으로 하며 구현 세부정보는 유사하지만 Phar 확장이 훨씬 더 강력합니다. 또한 Phar 확장을 사용하면 대부분의 PHP 애플리케이션을 수정하지 않고 실행할 수 있지만 PHP_Archive 기반 phar 아카이브는 작동하기 위해 광범위한 수정이 필요한 경우가 많습니다.