> 백엔드 개발 > PHP 튜토리얼 > PHP 개발을 위해 아카이브 형식 phar를 사용하는 방법

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

php中世界最好的语言
풀어 주다: 2023-03-18 07:40:01
원래의
1891명이 탐색했습니다.

PHP로 개발된 phar 파일의 개념과 사용법을 소개하겠습니다. PHP 애플리케이션은 여러 파일로 구성되는 경우가 많기 때문에 배포 및 운영을 위해 하나의 파일에 집중할 수 있으면 매우 편리합니다. 그러나 주로 PHP의 웹 환경을 위해 설계되었습니다. JAR 아카이브와 달리 Phar 아카이브는 PHP 자체에서 처리할 수 있으므로 이를 생성하거나 사용하기 위해 추가 도구를 사용할 필요가 없습니다. PHP 스크립트. phar는 PHP와 Archive의 합성어로 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 형식으로 배포되고 실행됩니다. 작곡가, 단위 테스트: phpunit, 생성, 실행, 추출 및 복원 방법을 살펴보겠습니다.

phar 파일 생성:

먼저 php.ini에서 phar.readonly 옵션을 수정하고, 앞의 세미콜론을 제거한 다음 보안상의 이유로 이 옵션이 기본적으로 켜져 있습니다. .ini 비활성화된 경우(값이 0 또는 꺼짐) 사용자 스크립트에서 활성화하거나 비활성화할 수 있습니다. php.ini에서 활성화하면 사용자 스크립트를 비활성화할 수 없으므로 으로 설정됩니다. 예를 보여드리려고 여기로 가세요.

프로젝트를 서버 루트 디렉터리에 프로젝트로 생성해 보겠습니다. 디렉터리의 구조는 다음과 같습니다.

file
  -yunek.js
  -yunke.css
lib
  -lib_a.php
template
  -msg.html
index.php
Lib.php
로그인 후 복사


파일 폴더에는 데모용으로 두 개의 빈 js 및 css 파일이 있습니다. 다양한 파일 형식을 포함할 수 있습니다.

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를 생성하여 phar 형식 파일을 생성합니다.

<?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) . &#39;/project&#39;);
//设置执行时的入口文件,第一个用于命令行,第二个用于浏览器访问,这里都设置为index.php
$phar->setDefaultStub(&#39;index.php&#39;, &#39;index.php&#39;);
로그인 후 복사


그런 다음 브라우저에서 엽니다. 이 yunkeBuild.php 파일에 액세스하면 yunke.phar 파일이 생성됩니다. 이때 서버 루트 디렉터리 구조는 다음과 같습니다.

project
yunkeBuild.php
yunke.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();
로그인 후 복사


인덱스에 첫 번째 줄만 있는 경우 .php 파일을 저장한 후 아카이브 파일을 사용하지 않을 때와 정확히 동일하게 다음 코드를 추가합니다:

require "project/index.php";
로그인 후 복사


두 번째 줄이 없으면 세 번째 줄 yunke()는 정의되지 않았음을 알리는 메시지를 표시합니다. phar 파일을 요구할 때 그 안에 있는 모든 파일을 가져오는 것이 아니라, 항목 실행 파일만 가져오는 것을 볼 수 있습니다. 그러나 실제 프로젝트에서는 사용해야 하는 다른 파일을 이 항목 파일로 가져오는 경우가 많습니다. 이 경우 항목 실행 파일은 project/index.php

phar 파일 추출 및 복원:

phar에 포함된 파일의 소스 코드가 궁금할 때가 있습니다. 이때 phar 파일을 복원해야 합니다. 만약 그렇다면 phpstorm 10과 같은 일부 IDE 도구를 사용하여 직접 열 수 있습니다. 수정이 필요한 경우 데모를 위해 Composer.phar을 다운로드하여 넣어야 합니다. server 디렉토리에, 루트 디렉토리에 get.php 파일을 생성합니다. 내용은 다음과 같습니다.

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/9
 * Time: 19:02
 */
$phar = new Phar(&#39;composer.phar&#39;);
$phar->extractTo(&#39;composer&#39;); //提取一份原项目文件
$phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可
로그인 후 복사


이 파일을 브라우저로 액세스하면 추출할 수 있습니다. 두 번째 줄은 작곡가 디렉토리를 생성하고 추출된 콘텐츠를 여기에 넣습니다. 세 번째 줄은 작곡가.zip 파일을 생성하고 압축을 풀어 추출 및 복원된 프로젝트 파일을 가져옵니다.

추가됨:

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

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

$phar = new Phar(&#39;lib/yunke.phar&#39;, 0);
$phar->setAlias ( "yun.phar");
로그인 후 복사


다음과 같이 사용됩니다:

<?php
require "lib/yunke.phar";
require "phar://yun.phar/Lib.php"; //使用别名访问归档文件
require "phar://lib/yunke.phar/Lib.php"; //当然仍然可以使用这样的方式去引用
로그인 후 복사

phar 파일을 만들 때 별칭을 지정하지 않으면 Phar::mapPhar('yunke.phar');를 사용하여 스텁 파일에 지정할 수도 있습니다

3. , 실제로는 PHP 실행 코드의 일부로서 아카이브를 만들 때 설정할 수 있으며, 아카이브 파일을 직접 실행하면 실제로 실행되므로 스크립트에 아카이브 파일을 포함시키면 시작 파일이 됩니다. 이를 포함하고 일반 PHP 파일처럼 실행하되 phar://를 직접 사용하십시오. 스텁 파일은 아카이브의 파일이 포함되어 있으면 실행되지 않는 경우가 많습니다. stub 파일은 HALT_COMPILER();로만 끝나며, 없는 경우 기본 stub 디자인을 사용합니다. phar 확장자를 사용할 경우 phar 파일의 내용을 임시 디렉터리에 추출한 후 실행할 수 있습니다. 하지만 php5.3부터는 확장 기능이 기본적으로 내장되어 활성화되어 있습니다

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

5. mapPhar 함수: 이 함수는 스텁 코드에서만 호출되어야 합니다. 아카이브 별칭이 설정되지 않은 경우 별칭을 설정하고 phar 스트림에 매핑된 참조를 여는 데 사용할 수 있습니다. 이 사례를 읽고 나면 방법을 마스터하신 것입니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목해 보세요!

관련 자료:

PHP가 대규모 웹 사이트 트래픽 및 높은 동시성 문제를 해결하는 방법

AJAX 원칙 및 CORS 도메인 간 방법

Javascript 데이터 유형 및 git 사용 코드에 대한 자세한 설명

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

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