【问题标题】:'php pyrus.phar' won't get executed'php pyrus.phar' 不会被执行
【发布时间】:2011-07-19 13:35:13
【问题描述】:

我在 Debian 上使用 PHP 5.3,并根据 php -m 'Phar' 加载。

但是执行php pyrus.pharphp pyrus.phar config-show 导致根本没有输出。

可能是什么问题?

debian:~# php -v
PHP 5.3.5-1 with Suhosin-Patch (cli) (built: Feb 19 2011 01:57:59)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

php -i 给我:

[...]

Phar

Phar: PHP Archive support => enabled
Phar EXT version => 2.0.1
Phar API version => 1.1.1
SVN revision => $Revision: 305584 $
Phar-based phar archives => enabled
Tar-based phar archives => enabled
ZIP-based phar archives => enabled
gzip compression => enabled
bzip2 compression => enabled
OpenSSL support => enabled


Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive => Local Value => Master Value
phar.cache_list => no value => no value
phar.readonly => On => On
phar.require_hash => On => On

[...]

让我困惑的是 libxml2 应该默认可用于 PHP >5.3.1,但 php -m 仅列出 libxml。 虽然 php -i 会给我:

libXML support => active
libXML Compiled Version => 2.7.8
libXML Loaded Version => 20708
libXML streams => enabled

【问题讨论】:

  • 尝试php -d error_reporting=E_ALL pyrus.phar 或其他常见的陷阱选项。你测试的是哪个版本?最新下载2.0.0a2 似乎对我有用。
  • php -d error_report=E_ALL pyrus.phar 再次导致根本没有输出。虽然如果我用 pyrus2.phar 替换命令中的 pyrus.phar 它告诉我无法打开输入文件....所以发生了一些事情。是的,我正在尝试最新的 pyrus。
  • 我遇到了和你一样的问题:在 Ubuntu 上,它就像一个魅力,但它在我的 Debian 机器上不起作用。我看看能不能找到问题。

标签: php pear suhosin phar pyrus


【解决方案1】:

找到了:)

看来 Debian 会安装一个带有 Suhosin 补丁的 PHP 版本。我自己的 php -v 输出将显示以下内容:

web01:/home/berry# php -v
PHP 5.3.5-1 with Suhosin-Patch (cli) (built: Feb 19 2011 01:57:59) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

现在,Suhosin 似乎导致了这个问题:它不允许执行 phar 文件。如果您查看 /var/log/user.log,您应该会看到如下条目:

web01:/home/berry# tail /var/log/user.log | grep pyrus
Mar 23 11:27:50 web01 suhosin[17463]: ALERT - Include filename ('phar:///home/berry/pyrus.phar/PEAR2_Pyrus-2.0.0a2/php/PEAR2/Pyrus/ScriptFrontend/Commands.php') is an URL that is not allowed (attacker 'REMOTE_ADDR not set', file '/home/berry/pyrus.phar', line 40)

由于我们仅在 cli 上执行此操作,因此将以下行添加到 /etc/php5/cli/conf.d/phar.ini 应该可以解决此问题,它对我有用。

suhosin.executor.include.whitelist="phar"

祝你好运:)

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2016-06-30
    相关资源
    最近更新 更多