PHP

pecl install xxxx する際は、php -v と php-config –version が一致しているか確認してから行う

投稿日:2019年8月23日 更新日:

1. はじめに

PHP では C言語で記述された拡張モジュールを pecl コマンドでインストールすることができます(参考:PHP: PECL インストール入門 – Manual)。

pecl install モジュール名 というコマンドでインストールを行うのですが、これを実行する前に確認しておくとよい項目を紹介します。

2. pecl install xxxx する前に確認すること

以下の2つのコマンドによって表示されるバージョン情報が一致しているかどうかを確認します。

$ php -v
$ php-config --version

php-config --version の方が古い場合があるのですが、その場合は php-dev といった “dev” のついたパッケージをインストールします。

例えば、php -v が “PHP 7.3.x” で php-config --version が “PHP 7.2.x” であれば、php7.3-dev というパッケージをインストールします(これはUbuntu の場合です)。インストールするコマンドは以下です。

$ sudo apt install php7.3-dev

3. どのような問題が起きるか

以上のことを確認せずに pecl install xxxx すると、PHP を実行する毎に以下の警告が表示されます。

警告メッセージの例

PHP Warning:  PHP Startup: xxxxxx: Unable to initialize module
Module compiled with module API=20170718
PHP    compiled with module API=20180731

PHP自体とモジュールのバージョンが異なっています。

このような警告が表示されたら、PHPのバージョンに合わせた php-dev パッケージをインストールすればよいのですが、それでも警告が出るようなら先程インストールしたモジュールを一旦アンインストールしてから再度インストールします。

$ sudo pecl uninstall モジュール名
$ sudo pecl install モジュール名

📂-PHP

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Google App Engine

普通のPHPサイトをGAE(php72)上で実現する方法

普通のPHPサイトをGAE(php72)上で実現する方法について説明しています。

PHP

PHP: ob_start() 関数によるバッファリングの動作

PHP の ob_start() 関数によるバッファリングの動作について説明します。

PHP

PHP 7.3.0 新機能

目次はじめにFlexible Heredoc and Nowdoc SyntaxPCRE2 MigrationMultiple MBString Improvements はじめに PHP 7.3.0 …

PHP

PHPで即時実行関数を使って名前空間を汚さない

JavaScript だとよく見るやり方なのですが、「即時実行関数を使って名前空間を汚さない」やり方って、PHP の場合はあまりやらないのでしょうか? PHPで関数を宣言すると、その名前はグローバル空 …

PHP

Ubuntu で 複数のバージョンの PHP を使う手順

目次1. はじめに2. 前提とする環境 3. PHP 7.2 を導入する手順手順1:リポジトリを追加するツールをインストール手順2:リポジトリを追加手順3:PHP 7.2 をインストール4. PHP …