PHP 애플리케이션은 여러 파일로 구성되는 경우가 많습니다. 하나의 파일로 모아서 배포하고 실행할 수 있으면 매우 편리합니다. 예를 들어 윈도우 운영체제의 설치 프로그램이나 jquery 라이브러리 등이 있습니다. 잠깐, 이를 위해 PHP는 phar 문서 파일 형식을 사용합니다. 이 개념은 Java의 jar에서 유래했지만 주로 Java용으로 설계되었습니다.
PHP의 웹 환경은 JAR 아카이브와 달리 Phar 아카이브는
기본적으로 처리되므로 생성하거나 사용하는 데 추가 도구가 필요하지 않습니다. PHP 스크립트를 사용하여 생성하거나 추출하기만 하면 됩니다. phar는 PHP와 PHP를 합친 합성어입니다.
아카이브 구성, php 아카이브 파일을 뜻하는 것을 알 수 있습니다.
phar 아카이브 파일에는 tar 아카이브, zip 아카이브, phar 아카이브의 세 가지 형식이 있습니다. 처음 두 가지 유형의 실행을 위해서는 Phar 확장 지원을 설치해야 하며 여기서는 주로 phar 아카이브 형식에 대해 설명합니다.
phar 형식 아카이브 파일은 직접 실행할 수 있으며 생성은 Phar 확장에 의존하며 직접 작성한 PHP 스크립트에 의해 생성됩니다.
Phar 확장은 PHP의 새로운 개념이 아닙니다. 이는 php5.3에서 PHP에 내장되었습니다. 원래는 PHP로 작성되었으며 이름이 지정되었습니다. PHP_Archive는 2005년에 PEAR 라이브러리에 추가되었습니다. 이 문제에 대한 순수한 PHP 솔루션은 실제로 매우 느리기 때문에 2007년 순수 C 언어 확장으로 다시 작성되었으며 SPL Phar를 사용하여 ArrayAccess 객체 탐색을 추가했습니다. 아카이빙 지원. 그 이후로 Phar 아카이브의 성능을 개선하기 위한 많은 작업이 이루어졌습니다.
Phar 확장은 PHP 스트림 래퍼에 따라 달라집니다. 이를 위해 PHP 스트림 및 래퍼 래퍼의 개념과 사용 예에 대한 자세한 설명은 이전 기사를 참조하세요. 많은 PHP 애플리케이션이 phar 형식으로 배포되고 실행됩니다. 유명한 애플리케이션에는 종속성 관리(작성기 및 단위 테스트)가 포함됩니다. 생성, 실행, 추출 및 복원 방법을 살펴보겠습니다.
phar 파일 생성:
먼저 php.ini에서 phar.readonly 옵션을 수정하고 앞의 세미콜론을 제거한 후 값을 off로 변경합니다. 보안상의 이유로 이 옵션은 php.ini에서 비활성화된 경우(값은 0 또는 off입니다.) ) 이면 사용자 스크립트에서 켜거나 끌 수 있습니다. php.ini에서 켜면 사용자 스크립트를 끌 수 없으므로 여기서는 예제를 보여주기 위해 끄기로 설정합니다.
프로젝트를 생성해 보겠습니다. 서버 루트 디렉토리에 프로젝트 폴더를 생성합니다. 디렉토리의 구조는 다음과 같습니다.
file -yunek.js -yunke.css lib -lib_a.php template -msg.html index.php Lib.php
파일 폴더에는 내용이 비어 있는 두 개의 js 및 css 파일이 있습니다. 이는 phar가 여러 파일 형식을 포함할 수 있다는 점만 보여줍니다
lib_a.php의 내용은 다음과 같습니다.
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:23 */ function show(){ echo "l am show()"; }
msg.html 내용은 다음과 같습니다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>phar</title> </head> <body> <?=$str; ?> </body> </html>
index.php의 내용은 다음과 같습니다.
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:17 */ require "lib/lib_a.php"; show(); $str = isset($_GET["str"]) ? $_GET["str"] : "hello world"; include "template/msg.html";
Lib.php의 내용은 다음과 같습니다.
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:20 */ function yunke() { echo "l am yunke()"; }
프로젝트 파일이 준비되었습니다. 이제 프로젝트 폴더와 동일한 디렉터리에 yunkeBuild.php를 생성하여 내용은 다음과 같습니다.
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:36 */ //产生一个yunke.phar文件 $phar = new Phar('yunke.phar', 0, 'yunke.phar'); // 添加project里面的所有文件到yunke.phar归档文件 $phar->buildFromDirectory(dirname(__FILE__) . '/project'); //设置执行时的入口文件,第一个用于命令行,第二个用于浏览器访问,这里都设置为index.php $phar->setDefaultStub('index.php', 'index.php');
그런 다음 브라우저에서 이 yunkeBuild.php 파일에 액세스하면 yunke.phar 파일이 생성됩니다. 이때 서버 루트 디렉터리 구조는 다음과 같습니다.
project yunkeBuild.php yunke.phar
이는 phar 아카이브 파일을 생성하는 가장 간단한 프로세스입니다. 자세한 내용은 공식 웹사이트를 참조하세요. 프로젝트에 단일 실행 항목이 없으면 phar 아카이브 파일을 사용하는 것이 적합하지 않습니다. phar 아카이브 파일 사용:
위에서 생성한 phar 파일을 사용하는 방법을 보여주기 위해 서버 루트 디렉터리에 index.php 파일을 생성합니다. 내용은 다음과 같습니다.
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/8 * Time: 9:33 */ require "yunke.phar"; require "phar://yunke.phar/Lib.php"; yunke();
index.php 파일에 첫 번째 줄만 있는 경우 아카이브 파일을 사용하지 않을 때와 정확히 동일하게 다음 코드를 추가하세요:
require "project/index.php";
두 번째 줄이 없으면 세 번째 줄의 yunke()는 정의되지 않았다는 메시지를 표시하므로 phar 파일이 필요할 때 그 안에 있는 모든 파일을 가져오지 않고 항목 실행 파일만 가져오는 것을 알 수 있습니다. 그러나 실제 프로젝트에서는 이 항목 파일에서 사용해야 하는 다른 파일을 가져오는 경우가 많습니다. 이 예에서는 항목 실행 파일이 project/index.php
입니다. phar 파일 추출 및 복원:
가끔 phar에 포함된 파일의 소스코드가 궁금할 때가 있는데, 이때 phar 파일을 복원해야 한다면 phpstorm과 같은 IDE 도구를 이용하면 된다. 10에서는 직접 열 수 있으며 수정이 필요한 경우 압축을 풀어야 합니다. 데모를 위해 작곡가.phar을 다운로드하여 서버 디렉터리에 넣고 루트 디렉터리에 get.php 파일을 생성합니다. 내용은 다음과 같습니다:
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/9 * Time: 19:02 */ $phar = new Phar('composer.phar'); $phar->extractTo('composer'); //提取一份原项目文件 $phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可
브라우저를 사용하여 이 파일에 액세스하여 추출합니다. 위의 예는 두 가지 추출 방법을 보여줍니다. 두 번째 줄은 작곡가 디렉터리를 만들고 추출된 콘텐츠를 여기에 넣습니다. 이 파일은 압축을 풀 수 있습니다. . 추출 및 복원된 프로젝트 파일을 사용할 수 있습니다.
보충:
1. phar 파일을 프로덕션 서버에 배포할 때 브라우저가 phar 파일에 액세스할 때 직접 다운로드하지 않도록 서버 구성을 조정해야 합니다
2. 아카이브에 대한 별칭을 설정할 수 있습니다. 별칭은 아카이브 파일에 영구적으로 저장되며, 파일 시스템에서 아카이브 파일이 저장된 위치에 관계없이 짧은 이름으로 아카이브를 참조할 수 있습니다.
별칭을 설정한 후 다음과 같이 사용할 수 있습니다.$phar = new Phar('lib/yunke.phar', 0); $phar->setAlias ( "yun.phar");
3. 아카이브 파일에 실제로는 PHP 실행 코드의 일부인 스텁(stub) 파일이 있는데, 아카이브 생성 시 설정할 수 있으며, 아카이브 파일을 직접 실행하면 실제로 실행되기 때문에 스타트업 파일이다. ; 스크립트에 아카이브 파일이 포함되어 있으면 일반 php 파일처럼 include해서 실행하는 것과 같지만, phar://를 이용해 아카이브에 파일을 직접 포함할 경우에는 스텁 코드가 실행되지 않습니다. 스텁 파일을 실행하려면 다른 파일이 필요한 경우가 많습니다. 스텁 파일에 대한 제한은 __HALT_COMPILER();로만 끝나는 것입니다. 기본 스텁은 phar 파일의 내용을 임시 파일로 추출합니다. 디렉터리를 지정한 다음 실행하지만 php5.3부터는 기본적으로 확장 기능이 활성화됩니다
4. 생성된 phar 파일은 수정할 수 없으므로 구성 파일 등의 파일은 아카이브 파일 외부에 배치해야 합니다
5. mapPhar 함수: 이 함수는 스텁 코드에서만 호출되어야 합니다. 아카이브 별칭이 설정되지 않은 경우 별칭을 설정하고 phar 스트림에 매핑된 참조를 여는 데 사용할 수 있습니다.
관련 권장 사항:
PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법
phar 패키지 사용 방법 PHP에서 phar 패키지를 사용하는 방법에 대한 자세한 자습서
위 내용은 PHP 개발 아카이브 형식 phar 파일 개념 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!