![如何从解压的 RPM 中使用 PHP CLI 运行 .phar 文件?](https://linux22.com/image/101895/%E5%A6%82%E4%BD%95%E4%BB%8E%E8%A7%A3%E5%8E%8B%E7%9A%84%20RPM%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20PHP%20CLI%20%E8%BF%90%E8%A1%8C%20.phar%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
如何重现:
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
结果:
致命错误:在第 12 行的 […]/phpunit.phar 中找不到类“Phar”
根据官方文档 Phar 是“内置于”PHP 5.4 中的, 无论“内置于”是什么意思。确实有 arpm/usr/bin/phar
和 a rpm/usr/bin/phar.phar
,但我不知道如何继续rpm/usr/bin/php
处理 .phar 文件。没有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),因为这会使可移植性成为一个更大的问题。
好像没有单独的包可用于法尔。安装后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