재현 방법:
rpm2cpio | cpio
"rpm"이라는 디렉터리를 사용하여 CentOS 7 저장소에서 PHP 5.4(ncurses 및 OpenSSL 라이브러리 포함)를 "설치"합니다.phpunit.phar
버전 4.8.26 다운로드- 달리기
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
없습니다 . 스스로 실행하려고 하면 혼란이 발생합니다.phar
LD_LIBRARY_PATH=dependencies/rpm/usr/lib64 dependencies/rpm/usr/bin/php -m | grep -i phar
phar
$ 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