MacBookをMavericksにアップグレードして、開発環境を台無しにしました。私が今持っている問題は、私のpear/peclがバージョン5.4ではなく、以前の(5.3)バージョンのPHP)にインストールしようとすることです。
PHPバージョン:
$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
梨
$ pear version
PEAR Version: 1.9.4
PHP Version: 5.4.17
Zend Engine Version: 2.4.0
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
でAPCをインストールした場合
$ Sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
...
Build process completed successfully
Installing '/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h'
Installing '/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so'
install ok: channel://pecl.php.net/APC-3.1.13
Extension apc enabled in php.ini
そして、私のphp.iniでapcモジュールを有効にしますphp -vこれに変更します:
$ php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
したがって、peclは/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626
に私のapc拡張機能をインストールし、phpは/usr/lib/php/extensions/no-debug-non-zts-20100525/
でそれを期待します。
単にシンボリックリンクを作成すると、次のエラーが発生します。
$ php -v
PHP Warning: PHP Startup: apc: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
したがって、それは解決策ではありません。
誰かが私を正しい方向に向けることができますか?ここで何が起こっているのか、本当に手がかりはありません。
解決策は非常に簡単でした。私のpecl構成を変更する必要がありました。次の2つのコマンドでうまくいくことがわかりました。
Sudo pear config-set php_ini /etc/php.ini
Sudo pecl config-set bin_dir /usr/bin/
peclは間違ったphpizeを使用しました。 phpizeには2つのバージョンがありました。私のphp.iniファイルでも同じことが言えます。
私の場合、Gearmanをインストールしようとしていました。
pecl install gearmanは正しくインストールしませんでした。
php -i
は次のように表示されます:
PHP Extension => 20100525
それでも、peclは次を使用してインストールします。
PHP Api Version: 20090626
使用する構成設定を変更した後:
最初の修正
Sudo pecl config-set php_ini /etc/php.ini
Sudo pecl config-set php_bin /usr/bin/php5
私はまだ得ることに気づきました
警告:php_bin/usr/bin/php5にサフィックス5があるようですが、構成変数php_suffixが一致しません
これは、config設定を使用して解決できます。
追加修正
Sudo pear config-set php_suffix 5
私にとっては、カスタムPPAを追加してPHPを再インストールしたため、この問題に遭遇しました。これは、php5-devの以前のインストールが同期していないことを意味します。
あなたが同じ状況になったなら、ただ走りたくなるかもしれません。
apt-get remove php5-dev
pecl uninstall <extensionname>
apt-get install php5-dev
apt-get remove php5-pear
apt-get install php5-pear
pecl install <extensionname>
または、ソースをダウンロードしてphpizeを実行することもできます。
他の回答は(まだ)複数の「共同インストール可能」に対応しているようには見えないPHPインストールされているすべての拡張機能をビルドしたいPHPバージョン。
私が自分自身を見つけたシナリオを示すために(私はOndrejSurýPHP Ubuntu 16.04 LTSのPPAを使用しています):
root@localhost:~# ls -lah /usr/bin/*php*
-rwxr-xr-x 1 root root 11K Apr 19 12:50 dh_php
-rwxr-xr-x 1 root root 3.1K Apr 5 2016 dh_phpcomposer
-rwxr-xr-x 1 root root 5.4K Apr 5 2016 dh_phppear
lrwxrwxrwx 1 root root 21 Jul 24 00:44 php -> /etc/alternatives/php
-rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php5.6
-rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php7.0
-rwxr-xr-x 1 root root 4.4M Aug 4 14:22 php7.1
lrwxrwxrwx 1 root root 28 Jul 24 00:44 php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root 4.3K Jul 6 10:03 php-config5.6
-rwxr-xr-x 1 root root 4.1K Jul 6 10:03 php-config7.0
-rwxr-xr-x 1 root root 4.1K Aug 4 14:21 php-config7.1
lrwxrwxrwx 1 root root 24 Jul 24 00:44 phpize -> /etc/alternatives/phpize
-rwxr-xr-x 1 root root 4.7K Jul 6 10:03 phpize5.6
-rwxr-xr-x 1 root root 4.6K Jul 6 10:03 phpize7.0
-rwxr-xr-x 1 root root 4.6K Aug 4 14:21 phpize7.1
pecl install extension-name
はPHP 7.1のジョブを実行しますが、その他のジョブは実行しません。
他のアンサーは、アンインストール/再インストールは可能ですがphp*-dev
、意図的に共同インストールされたPHPバージョンがシステムにインストールされていることを考えると、私はそうではありません。
1つの解決策は、システムに存在する各バージョンの拡張機能を構築することです。
このスニペットは、PHP 5.6を使用してビルドする方法を示していますが、7.0と7.1でも同じことを行っており、手順も同じです。
この例では、Gitリポジトリから拡張機能を複製する方法を示していますが、任意のソースディレクトリを使用できます。
(#
は、rootであるか、Sudo
を使用する必要があることを示します。
# apt-get install php-dev
# cd ~
# git clone https://github.com/vendor/extension-name
# cd ./extension-name
# phpize5.6
# ./configure --with-php-config=/usr/bin/php-config5.6
# make clean
# make
# make install
# ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini
# service php5.6-fpm reload
Phpize拡張機能はPECLによって使用され、ハッキングを行わないため、再インストールすることをお勧めします。
次を実行(php 5.5 => php 5.6の例):
Sudo apt-get remove php5-dev
Sudo apt-get install php5.6-dev
(5.6を必要なバージョンに変更できます)
次に:
Sudo pecl install extensionname
UbuntuでPHPバージョンを切り替える方法があります:
Sudo update-alternatives --set php /usr/bin/php5.6
オプションで:
Sudo update-alternatives --set phar /usr/bin/phar5.6
Sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
Sudo update-alternatives --set phpize /usr/bin/phpize5.6
Sudo update-alternatives --set php-config /usr/bin/php-config5.6
最近同様の問題が発生しました。
(Debian、PHP 7.3インストールしたばかり、PHP 7.2)を使用していた)
誰かが最も高い投票数の回答を試みたが、まだ機能しない場合。デバッグする手順は次のとおりです。
そして、基本的にはそれだけです。
理由:
PECLには、php-devパッケージの一部であるphpizeが必要です。現在のバージョンのphpizeが見つからない場合、は以前のバージョンを探すため、古いPHP API番号になります。
Ubuntu 16.04でppa:ondrej/php(およびおそらく他の代替手段)を使用する場合、php 5.6のpecl/php拡張機能をインストールするために、以下を実行します。
pecl config-set ext_dir /usr/lib/php/20131226
pecl config-set php_bin /usr/bin/php5.6
pecl config-set php_ini /etc/php/5.6/cli/php.ini
pear config-set ext_dir /usr/lib/php/20131226
pear config-set php_bin /usr/bin/php5.6
pear config-set php_ini /etc/php/5.6/cli/php.ini
update-alternatives --config php #select php 5.6
update-alternatives --config php-config #select php 5.6
update-alternatives --config phpize #select php 5.6
次に、通常どおりpeclを使用できます。
pecl install raphf-1.1.2
raphf-1.1.2.tgzのダウンロード... raphf-1.1.2.tgz(15,915バイト)のダウンロードを開始しています......完了:15,915バイト8つのソースファイル、ビルド
実行中:phpize
構成:
PHP APIバージョン:20131106
ZendモジュールAPI No:20131226
Zend Extension Api No:220131226
...
インストールOK:channel://pecl.php.net/raphf-1.1.2
Php.iniで有効化された拡張raphf
Php.iniで拡張機能が有効になっていない場合、peclがextension="xxx.so"
はphp.iniの先頭にあるので、通常はファイルの末尾に手動で移動します。その後、次の拡張機能で問題ありません。
システム上にあるものに応じて、インストール後に変更をロールバックすることが必要になる場合があります。特に、デフォルトのphpバージョンを使用するには、update-alternativesを使用