
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