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サーバーのユーザーがこのファイルを読み取れることを確認してください。
Php.iniに最後にphar関連情報を追加してから、Webサーバーは再起動されていません。 Webサーバーを再起動します。
これは私のために働く:
php -d extension=phar.so composer.phar [... your command ...]
これには、現在のランタイムのphar拡張機能が含まれます。共有/ VPCサーバーで動作します。
私のために働いた唯一のことは、root権限でphpスクリプトを実行することでした
関連ファイルはすでに誰でもアクセス可能ですが...
/usr/lib64/php/modules/phar.so
/usr/local/lib/php.ini
CentOSで...
phar.so
はphp-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
ファイルを追加できます。
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
これが光を放つことを願っています。共有ホストを使用していて、composer=を実行するのに問題がありました。このサイトの指示を使用していました http://avantidevelopment.com/install-composer-on-bluehost/ 共通のディレクトリをセットアップしてインストールするcomposerで。私はそれに従ったが、次のコマンドを.bashrcに追加してエイリアスを追加する必要がある
alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar'
それは私のためにトリックをしました。これにつまずいた人が電球を消すことを願っています。
私のホスティング環境では、PHPバージョン番号を指定する必要がありました。例えば:
php-5.6 composer.phar
じゃない
php composer.phar
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 ############# ################################## >>
うんrequire_once 'phar://silex/silex.phar/autoload.php';
の代わりに require_once 'silex/silex.phar';
。そうでない場合は、エラーをスローするコードを確認する必要があります。