web-dev-qa-db-ja.com

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がこのエラーを投げている理由を誰もが知っていますか?

23
SecStone

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

_php -d extension=phar.so composer.phar <your_script>
_

その他のオプション:

入力した情報に基づいて、いくつかの可能性があります。

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

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

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

17
George Cummins

これは私のために働く:

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

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

19
Indivision Dev

私のために働いた唯一のことは、root権限でphpスクリプトを実行することでした

関連ファイルはすでに誰でもアクセス可能ですが...

/usr/lib64/php/modules/phar.so
/usr/local/lib/php.ini
0
Brenda.ZMPOV

CentOSで...

  • phar.sophp-commonパッケージに含まれています。
  • phar実行可能ファイルはphp-cliパッケージに含まれています。
  • php-mbstringphp-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ファイルを追加できます。

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
0
Martin Zeitler

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

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

それは私のためにトリックをしました。これにつまずいた人が電球を消すことを願っています。

0
mmv_sat

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

php-5.6 composer.phar

じゃない

php composer.phar

0
Harry Bosh

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

 >> urpmi php-phar; echo done 
依存関係を満たすために、次のパッケージがインストールされます。
パッケージバージョンリリースArch 
(medium "Core Release2 ")
 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 ############# ################################## 
 >> 
0
Paul afk

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

0
chx