首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行Phar档案

无法运行Phar档案
EN

Stack Overflow用户
提问于 2014-11-03 16:44:57
回答 1查看 1.6K关注 0票数 0

在RHEL服务器上,我似乎无法运行PhpUnit。下面的示例以root为例来说明我试图安装PhpUnit的步骤以及它如何不运行:

代码语言:javascript
复制
# wget https://phar.phpunit.de/phpunit.phar
# chmod +x phpunit.phar
# ./phpunit --version

PHP Fatal error:  require(): Failed opening required 'phar://phpunit-4.3.4.phar/phpunit/TextUI/Command.php' (include_path='.:') in /usr/local/bin/phpunit on line 592
PHP Stack trace:
PHP   1. {main}() /usr/local/bin/phpunit:0
PHP   2. {closure}() /usr/local/bin/phpunit:0

# mv phpunit.phar /usr/local/bin/phpunit
# which phpunit
/usr/local/bin/phpunit

# phpunit --version

PHP Fatal error:  require(): Failed opening required 'phar://phpunit-4.3.4.phar/phpunit/TextUI/Command.php' (include_path='.:') in /usr/local/bin/phpunit on line 592
PHP Stack trace:
PHP   1. {main}() /usr/local/bin/phpunit:0
PHP   2. {closure}() /usr/local/bin/phpunit:0

PHP似乎对第13行中定义的phar://地址格式感到窒息:

代码语言:javascript
复制
# cat /usr/local/bin/phpunit | awk 'NR==592'
          require __PHPUNIT_PHAR_ROOT__ . $classes[$class];

# cat /usr/local/bin/phpunit | grep -n __PHPUNIT_PHAR_ROOT__
13:define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-4.3.4.phar');
592:          require __PHPUNIT_PHAR_ROOT__ . $classes[$class];
601:        print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/manifest.txt');
20811:        if (defined('__PHPUNIT_PHAR_ROOT__')) {
20812:            $prefix = __PHPUNIT_PHAR_ROOT__;
26020:        copy(__PHPUNIT_PHAR_ROOT__ . '/ca.pem', $caFile);

服务器是RHEL6.5:

代码语言:javascript
复制
# uname -a
Linux foobar 2.6.32-220.38.1.el6.x86_64 #1 SMP Wed May 15 08:34:56 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/issue
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Kernel \r on an \m
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 17:59:30

解决方案是只使用PEAR中的PHPUnit,而PEAR也不会在此错误情况下运行:

代码语言:javascript
复制
[root@panthercrm ~]# /usr/bin/phpunit
PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /usr/share/pear/PHPUnit/
Autoload.php on line 64
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. require() /usr/bin/phpunit:43
PHP Fatal error:  require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:') in /usr/share/pear/PHPUni
t/Autoload.php on line 64
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. require() /usr/bin/phpunit:43        

将以下行添加到/etc/php.ini解决了PHPUnit的PEAR版本的问题:

代码语言:javascript
复制
include_path = ".:/usr/share/pear"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26718836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档