【问题标题】:PHP: Class 'Phar' not foundPHP:找不到类“Phar”
【发布时间】:2012-02-09 16:30:13
【问题描述】:

我尝试使用 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 会抛出这个错误吗?

【问题讨论】:

  • 为什么需要关闭detect_unicode?

标签: php phar


【解决方案1】:

尝试指定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 服务器尚未重新启动。重新启动您的网络服务器。

【讨论】:

  • 谢谢,我检查了你的所有建议。不幸的是,错误仍然存​​在。
  • 我将此标记为正确答案,因为您提供了一个很好的列表,可能是什么原因。就我而言,网络服务器的配置方式是在读取 php.ini 时默默地失败。所以我在extension=phar.so 行上方的某些行没有检测到错误。
  • 我从来没有听说过 PHP 在尝试读取 php.ini 时会静默失败。能否详细说明原因及解决方法?
  • 是的,这对我来说也是新的。如果我尝试从控制台启动 PHP 脚本(例如 php myscript.php),则会返回一个错误,即缺少另一个 .so 文件。注释掉这一行后,PHP 可以成功运行我的脚本(在 CLI 和浏览器中)。
【解决方案2】:

这对我有用:

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

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

【讨论】:

    【解决方案3】:

    在 CentOS ...

    • phar.so 包含在 php-common 包中。
    • 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
    

    或者,可以添加与网络服务器使用相同的模块.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
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        php-5.6 composer.phar

        不是

        php composer.phar

        【讨论】:

          【解决方案6】:

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

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

          这对我有用。希望偶然发现这个问题的人能点亮灯泡。

          【讨论】:

            【解决方案7】:

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

            >> urpmi php-phar;echo 完成 为了满足依赖关系,将安装以下软件包: 包版本发布架构 (中等“核心版本 2”) php-bz2 5.6.30 2.mga6 x86_64 php-phar 5.6.30 2.mga6 x86_64 将使用 326KB 的额外磁盘空间。 将检索 151KB 的包。 继续安装 2 个软件包? (是/否) 是 $镜像列表:媒体/核心/发布/php-bz2-5.6.30-2.mga6.x86_64.rpm $镜像列表:媒体/核心/发布/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 ########################################## #### >>

            【讨论】:

              【解决方案8】:

              我通过安装 phar 解决了它:

              apt-get install php-phar
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-11-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-14
                • 2022-10-04
                • 1970-01-01
                相关资源
                最近更新 更多