PHP CLI를 사용하여 압축을 푼 RPM에서 .phar 파일을 어떻게 실행할 수 있나요?

PHP CLI를 사용하여 압축을 푼 RPM에서 .phar 파일을 어떻게 실행할 수 있나요?

재현 방법:

  1. rpm2cpio | cpio"rpm"이라는 디렉터리를 사용하여 CentOS 7 저장소에서 PHP 5.4(ncurses 및 OpenSSL 라이브러리 포함)를 "설치"합니다.
  2. phpunit.phar버전 4.8.26 다운로드
  3. 달리기LD_LIBRARY_PATH=rpm/usr/lib64 rpm/usr/bin/php phpunit.phar

결과:

치명적인 오류: 'Phar' 클래스가 12행의 […]/phpunit.phar에 없습니다.

공식 문서에 따르면 Phar는 PHP 5.4에 "내장"되어 있습니다. "내장"이 무엇을 의미하든 상관 없습니다. 실제로 a rpm/usr/bin/phar와 a 가 있는데 .phar 파일을 rpm/usr/bin/phar.phar어떻게 진행해야 할지 모르겠습니다 . 아니요rpm/usr/bin/php 에 대해 컴파일된 모듈이 phar.so없습니다 . 스스로 실행하려고 하면 혼란이 발생합니다.pharLD_LIBRARY_PATH=dependencies/rpm/usr/lib64 dependencies/rpm/usr/bin/php -m | grep -i pharphar

$ LD_LIBRARY_PATH=rpm/usr/lib64 rpm/usr/bin/php rpm/usr/bin/phar

Warning: stream_wrapper_register(): class 'PHP_Archive' is undefined in […]/rpm/usr/bin/phar.phar on line 6

Warning: include(): Unable to find the wrapper "phar" - did you forget to enable it when you configured PHP? in […]/rpm/usr/bin/phar.phar on line 9

Warning: include(): Unable to find the wrapper "phar" - did you forget to enable it when you configured PHP? in […]/rpm/usr/bin/phar.phar on line 9

Warning: include(phar://[…]/rpm/usr/bin/phar.phar/phar.inc): failed to open stream: No such file or directory in […]/rpm/usr/bin/phar.phar on line 9

Warning: include(): Failed opening 'phar://[…]/rpm/usr/bin/phar.phar/phar.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in […]/rpm/usr/bin/phar.phar on line 9
Neither Extension Phar nor class PHP_Archive are available.

이식성이 더 큰 문제가 될 수 있으므로 전체 도구 모음(PEAR, Composer)을 설치하는 것을 피하고 싶습니다.

아마별도의 패키지Farr에서 사용 가능합니다. 설치 후 epel-release일치하는 유일한 패키지 phar는 이며 php-seld-phar-utils관련 파일을 포함하지 않는 것으로 보입니다.

# rpm --query --list php-seld-phar-utils
/usr/share/doc/php-seld-phar-utils-1.0.1
/usr/share/doc/php-seld-phar-utils-1.0.1/README.md
/usr/share/doc/php-seld-phar-utils-1.0.1/composer.json
/usr/share/licenses/php-seld-phar-utils-1.0.1
/usr/share/licenses/php-seld-phar-utils-1.0.1/LICENSE
/usr/share/php/Seld
/usr/share/php/Seld/PharUtils
/usr/share/php/Seld/PharUtils/Timestamps.php
/usr/share/php/Seld/PharUtils/autoload.php

관련 정보