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に「組み込み」されています。 「組み込み」が何を意味しても構いません。実際にarpm/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

関連情報