25

WebアプリケーションのベースとしてSilexフレームワークを使用しようとしています。ただし、*。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がこのエラーをスローする理由を誰かが知っていますか?

4

8 に答える 8

22

拡張子へのパスを指定してみてください:

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

別のオプション:

あなたが提供した情報に基づいて、いくつかの可能性があります:

  • 別のphp.iniを使用しています。の出力をチェックしphpinfo()て確認し、アクティブなものを編集していることを確認します。

  • /usr/lib/php/modules/phar.soは読み取り可能ではありません。Webサーバーユーザーがこのファイルを読み取れることを確認します。

  • phar関連の情報をphp.iniに最後に追加してから、Webサーバーが再起動されていません。Webサーバーを再起動します。

于 2012-01-13T13:15:25.640 に答える
19

これは私のために働きます:

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

これには、現在のランタイムのphar拡張機能が含まれます。共有/VPCサーバーで動作します。

于 2014-02-11T09:50:52.073 に答える
1

CentOSで..。

  • phar.sophp-commonパッケージに含まれています。
  • 実行可能ファイルはパッケージpharに含まれています。php-cli
  • php-mbstringまた、php-bz2必要なようです。

php -m | grep phar何も返さない場合は.ini、CLI用に次のファイルを追加する必要があります。

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または、 Webサーバーが使用するのと同じモジュールファイルを追加することもできます。

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
于 2019-07-23T04:52:43.023 に答える
0

うーん。require_once 'phar://silex/silex.phar/autoload.php';の代わりに必要だと思いますrequire_once 'silex/silex.phar';。そうでない場合は、コードがエラーをスローするのを確認する必要があります。

于 2012-01-13T13:16:51.827 に答える
0

私のホスティング環境では、phpのバージョン番号を指定する必要がありました。例えば:

php-5.6composer.phar

いいえ

phpcomposer.phar

于 2015-09-09T21:36:57.607 に答える
0

これがいくつかの光を当てることを願っています。共有ホストを使用していて、composerを実行するのに問題がありました。私はこのサイトの指示http://avantidevelopment.com/install-composer-on-bluehost/を使用して、共通のディレクトリを設定し、そこにcomposerをインストールしていました。私はそれに従いましたが、エイリアスを追加する必要があります。次のコマンドを.bashrcに追加しました。

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

それは私にとってトリックでした。これにつまずいた人が電球を発射することを願っています。

于 2016-11-10T20:08:27.673 に答える
0

Mageia 4、Mageia 5、Mageia6ユーザーの場合

>> urpmi php-phar; echo done
依存関係を満たすために、次のパッケージがインストールされます。
  パッケージバージョンリリースアーチ
(ミディアム「コアリリース2」)
  php-bz2 5.6.30 2.mga6 x86_64
  php-phar 5.6.30 2.mga6 x86_64
326KBの追加ディスク容量が使用されます。
151KBのパッケージが取得されます。
2つのパッケージのインストールを続行しますか?(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
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 ########################################### ####
>>
于 2017-04-05T22:27:11.757 に答える
0

私はpharをインストールすることでそれを解決しました:

apt-get install php-phar
于 2021-03-02T15:35:42.273 に答える