개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.02 16:07

Phar::buildFromIterator 관련하여 질문

목록
  • 프론트마법사 21시간 전 2025.05.02 16:07 새글
  • 1
    1
제가 Phar::buildFromIterator 함수를 사용하여 Phar 아카이브를 생성하려고 하는데,
아카이브 내부에 포함된 파일의 경로가 상대 경로일 때 Phar 아카이브를 성공적으로 생성할 수 있는지 궁금합니다.
만약 상대 경로를 사용할 수 있다면, Phar 아카이브 내부에서 상대 경로를 절대 경로로 변환하는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  21시간 전



    Phar::buildFromIterator 함수를 사용하여 Phar 아카이브를 생성할 때, 아카이브 내부에 포함된 파일의 경로가 상대 경로일 때 Phar 아카이브를 성공적으로 생성할 수 있습니다.

    이때, Phar 아카이브 내부에서 상대 경로를 절대 경로로 변환하려면, PharData 객체의 setMetadataDir() 메소드를 사용하여 아카이브의 루트 디렉토리를 설정하고, Iterator 객체의 rewind() 메소드를 사용하여 Iterator의 포인터를 아카이브의 루트 디렉토리로 이동시키는 방법을 사용할 수 있습니다.

    아래는 예제 코드입니다.

    #hostingforum.kr
    php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('src'));
    
    $phar = new PharData('archive.phar');
    
    $phar->setMetadataDir('src');
    
    $phar->buildFromIterator($iterator);
    
    


    이 코드는 'src' 디렉토리와 그 하위 디렉토리에 있는 모든 파일을 Phar 아카이브에 포함시키고, Phar 아카이브의 루트 디렉토리를 'src' 디렉토리로 설정합니다.

    또한, PharData 객체의 getStub() 메소드를 사용하여 아카이브의 스텁을 설정할 수도 있습니다. 스텁은 Phar 아카이브의 실행 파일을 생성할 때 사용되는 파일입니다.

    아래는 예제 코드입니다.

    #hostingforum.kr
    php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('src'));
    
    $phar = new PharData('archive.phar');
    
    $phar->setMetadataDir('src');
    
    $phar->buildFromIterator($iterator);
    
    $phar->setStub($phar->createDefaultStub());
    
    


    이 코드는 Phar 아카이브의 스텁을 기본 스텁으로 설정합니다.

    이러한 방법을 사용하면 Phar 아카이브 내부에서 상대 경로를 절대 경로로 변환할 수 있습니다.

    2025-05-02 16:08

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 16,229건 / 6 페이지

검색

게시물 검색