PHP:找不到类'Phar'

时间:2012-01-13 13:09:43

标签: php phar

我尝试使用Silex框架作为我的Web应用程序的基础。但是,如果我尝试包含* .phar存档,PHP会抛出以下错误:

Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11

我的/etc/php/php.ini中有以下相关行(如Silex文档中所述):

extension=phar.so
phar.readonly = Off
phar.require_hash = Off
detect_unicode = Off

PHAR库位于/usr/lib/php/modules/phar.so中,被设置为php.ini

中所有库的扩展路径

有谁知道为什么PHP会抛出此错误?

8 个答案:

答案 0 :(得分:18)

这对我有用:

php -d extension=phar.so composer.phar [... your command ...]

这包括当前运行时的phar扩展。适用于共享/ VPC服务器。

答案 1 :(得分:16)

尝试指定path to the extension

php -d extension=phar.so composer.phar <your_script>

其他选项:

根据您提供的信息,有几种可能性:

  • 您正在使用不同的php.ini。检查phpinfo()的输出以确认,并确保您正在编辑活动的输出。

  • /usr/lib/php/modules/phar.so不可读。确保Web服务器用户可以读取此文件。

  • 自上次将与phar相关的信息添加到php.ini以来,您的Web服务器尚未重新启动。重新启动您的网络服务器。

答案 2 :(得分:0)

嗯。我认为您需要require_once 'phar://silex/silex.phar/autoload.php';而不是require_once 'silex/silex.phar';。如果不是这种情况,那么我们需要看到代码抛出错误。

答案 3 :(得分:0)

希望这可能会有所启发。我使用共享主机并且无法让作曲家运行。我正在使用此站点方向http://avantidevelopment.com/install-composer-on-bluehost/来设置公共目录并在其中安装composer。我跟着它,但是为了我的别名,我添加了以下命令到.bashrc

alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar'

这对我有用。希望无论谁发现这个都会引发一个灯泡。

答案 4 :(得分:0)

对于Mageia 4,Mageia 5,Mageia 6用户

>> urpmi php-phar;echo done
To satisfy dependencies, the following packages are going to be installed:
  Package                        Version      Release       Arch
(medium "Core Release2")
  php-bz2                        5.6.30       2.mga6        x86_64
  php-phar                       5.6.30       2.mga6        x86_64
326KB of additional disk space will be used.
151KB of packages will be retrieved.
Proceed with the installation of the 2 packages? (Y/n) y


    $MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm
    $MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm 
Preparing...                     ###############################################
      1/2: php-bz2               ###############################################
      2/2: php-phar              ###############################################
>> 

答案 5 :(得分:0)

在CentOS上...

  • phar.so包含在php-common软件包中。
  • phar可执行文件包含在php-cli软件包中。
  • php-mbstringphp-bz2似乎也是必需的。

php -m | grep phar不返回任何内容时,必须为CLI添加以下.ini文件:

sudo cp /etc/php-zts.d/phar.ini /etc/php-cli.d/phar.ini
sudo cp /etc/php-zts.d/mbstring.ini /etc/php-cli.d/mbstring.ini
sudo cp /etc/php-zts.d/bz2.ini /etc/php-cli.d/bz2.ini

或者,可以添加与网络服务器相同的模块.ini文件:

sudo cp /etc/php-zts.d/* /etc/php-cli.d/

它看起来应该像这样:

$ php --ini

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php-cli.d/
Additional .ini files parsed:      /etc/php-cli.d/bz2.ini,
/etc/php-cli.d/mbstring.ini,
/etc/php-cli.d/phar.ini

然后可以运行它:

$ php ./composer.phar
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/

并将其移动到$PATH下方:

sudo mv ./composer.phar /usr/local/bin/composer

答案 6 :(得分:0)

对我唯一有效的方法是使用root特权运行php脚本

即使任何人都已经可以访问相关文件。...

id  name     
---|-----|
1  | abc | 
2  | abc |
3  | def |
4  | def |
5  | def |
6  | abc |
7  | abc |
8  | def |

答案 7 :(得分:0)

我通过安装 phar 解决了:

apt-get install php-phar