質問

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

役に立ちましたか?

解決

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

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

その他のオプション:

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

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

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

  • Webサーバーは、PHAR関連情報をPHP.iniに最後に追加してから再起動していません。ウェブサーバーを再起動します。

他のヒント

これは私にとってはうまくいきます:

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

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

hm。私はあなたが必要だと思います require_once 'phar://silex/silex.phar/autoload.php'; それ以外の require_once 'silex/silex.phar';. 。これが当てはまらない場合は、コードがエラーを投げるのを確認する必要があります。

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

php-5.6composer.phar

いいえ

php composer.phar

これがいくつかの光を当てることを願っています。私は共有ホストを使用していて、作曲家を走らせるのに苦労しました。私はこのサイトの指示を使用していました http://avantidevelopment.com/install-composer-on-bluehost/ 共通のディレクトリをセットアップし、その中にコンポーザーをインストールします。私はそれに従いましたが、私のエイリアスのためにshoudを追加します。私は.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              ###############################################
>> 

Centosで...

  • phar.so に含まれています php-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 WebServerが使用するようにファイル:

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

私のために働いた唯一のことは、ルートの特権でPHPスクリプトを実行することでした

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

/usr/lib64/php/modules/phar.so
/usr/local/lib/php.ini
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top