PHP 개발 아카이브 형식 phar 파일 개념 및 사용법

小云云
풀어 주다: 2023-03-18 21:38:01
원래의
1542명이 탐색했습니다.

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(&#39;yunke.phar&#39;, 0, &#39;yunke.phar&#39;);
// 添加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(&#39;composer.phar&#39;);
$phar->extractTo('composer'); //提取一份原项目文件
$phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可
로그인 후 복사

브라우저를 사용하여 이 파일에 액세스하여 추출합니다. 위의 예는 두 가지 추출 방법을 보여줍니다. 두 번째 줄은 작곡가 디렉터리를 만들고 추출된 콘텐츠를 여기에 넣습니다. 이 파일은 압축을 풀 수 있습니다. . 추출 및 복원된 프로젝트 파일을 사용할 수 있습니다.

보충:

1. phar 파일을 프로덕션 서버에 배포할 때 브라우저가 phar 파일에 액세스할 때 직접 다운로드하지 않도록 서버 구성을 조정해야 합니다

2. 아카이브에 대한 별칭을 설정할 수 있습니다. 별칭은 아카이브 파일에 영구적으로 저장되며, 파일 시스템에서 아카이브 파일이 저장된 위치에 관계없이 짧은 이름으로 아카이브를 참조할 수 있습니다.

별칭을 설정한 후 다음과 같이 사용할 수 있습니다.

$phar = new Phar('lib/yunke.phar', 0);
$phar->setAlias ( "yun.phar");
로그인 후 복사
phar 파일을 만들 때 별칭을 지정하지 않으면 Phar::mapPhar('yunke.phar')를 사용하여 스텁 파일에 지정할 수도 있습니다

3. 아카이브 파일에 실제로는 PHP 실행 코드의 일부인 스텁(stub) 파일이 있는데, 아카이브 생성 시 설정할 수 있으며, 아카이브 파일을 직접 실행하면 실제로 실행되기 때문에 스타트업 파일이다. ; 스크립트에 아카이브 파일이 포함되어 있으면 일반 php 파일처럼 include해서 실행하는 것과 같지만, phar://를 이용해 아카이브에 파일을 직접 포함할 경우에는 스텁 코드가 실행되지 않습니다. 스텁 파일을 실행하려면 다른 파일이 필요한 경우가 많습니다. 스텁 파일에 대한 제한은 __HALT_COMPILER();로만 끝나는 것입니다. 기본 스텁은 phar 파일의 내용을 임시 파일로 추출합니다. 디렉터리를 지정한 다음 실행하지만 php5.3부터는 기본적으로 확장 기능이 활성화됩니다

4. 생성된 phar 파일은 수정할 수 없으므로 구성 파일 등의 파일은 아카이브 파일 외부에 배치해야 합니다

5. mapPhar 함수: 이 함수는 스텁 코드에서만 호출되어야 합니다. 아카이브 별칭이 설정되지 않은 경우 별칭을 설정하고 phar 스트림에 매핑된 참조를 여는 데 사용할 수 있습니다.

관련 권장 사항:

PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법

phar 패키지 사용 방법 PHP에서 phar 패키지를 사용하는 방법에 대한 자세한 자습서

php

위 내용은 PHP 개발 아카이브 형식 phar 파일 개념 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!