PHP:Class';Phar';找不到

PHP:Class';Phar';找不到,php,phar,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的文档中所建议的): PHAR库存在于/usr/lib/php/modules/PHAR.so中,它被设置为myphp.ini中所有库的扩展路径 有人知道PH

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

Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11
以下相关行位于我的
/etc/php/php.ini
(如Silex的文档中所建议的):

PHAR库存在于
/usr/lib/php/modules/PHAR.so
中,它被设置为my
php.ini中所有库的扩展路径

有人知道PHP抛出此错误的原因吗?

请尝试指定:

php-d extension=phar.so composer.phar
其他选项:

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

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

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

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


    • Hm.我想你需要
      require\u一次'phar://silex/silex.phar/autoload.php';而不是
      要求一次'silex/silex.phar'。如果不是这样,那么我们需要看到代码抛出错误。

      这对我很有用:

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

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

      在我的托管环境中,我需要指定php版本号。例如:

      php-5.6 composer.phar

      不是


      php composer.phar

      希望这能给我们带来一些启示。我使用的是共享主机,无法运行composer。我正在使用这个网站来设置一个公共目录,并在其中安装composer。我遵循了它,但是我应该为我的别名添加以下命令到.bashrc

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

      这对我来说是个好办法。希望任何一个偶然发现这个的人都能点亮一个灯泡。

      对于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 ############################################### >> >>urpmi-php-phar;回音完成 为了满足依赖关系,将安装以下软件包: 包版本发布拱门 (中等“核心版本2”) php-bz2 5.6.30 2.mga6 x86_64 php phar 5.6.30 2.mga6 x86_64 将使用326KB的额外磁盘空间。 将检索151KB的包。 是否继续安装2个软件包?(是/否)是 $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 安装php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm 准备############################################### 1/2:php-bz2############################################### 2/2:php phar############################################### >> 在世纪

      • phar.so
        包含在
        php公共
        包中
      • phar
        可执行文件包含在
        php-cli
        包中
      • php-mbstring
        php-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
      或者,可以添加与Web服务器使用相同的模块
      .ini
      文件:

      sudo cp/etc/php zts.d/*/etc/php cli.d/
      应该是这样的:

      $php--ini
      配置文件(php.ini)路径:/etc
      加载的配置文件:/etc/php.ini
      在:/etc/php cli.d中扫描其他.ini文件/
      解析的其他.ini文件:/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
      
      我通过安装phar解决了这个问题:

      apt-get install php-phar
      

      谢谢,我检查了你所有的建议。不幸的是,错误仍然存在。我将此标记为正确答案,因为您提供了一个很好的列表,列出了可能的原因。在我的例子中,Web服务器的配置方式是在读取php.ini时以静默方式失败。因此,在
      extension=phar.So
      行上方的一些行中,我没有检测到错误。我从来没有听说过PHP在尝试读取PHP.ini时悄悄失败。你能详细说明原因和解决办法吗?是的,这对我来说也是新鲜事。如果我试图从控制台启动PHP脚本(例如
      PHP myscript.PHP
      ),则返回一个错误,即缺少另一个
      。因此
      文件。在注释完这一行之后,PHP可以成功地运行我的脚本(在CLI和浏览器中)。为什么需要关闭
      detect\u unicode
      ? >> 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 ############################################### >>
      apt-get install php-phar