2013-10-24 63 views
18

私はMacBookをMavericksにアップグレードして開発環境を台無しにしました。私が今持っている問題は、私のpear/peclがバージョン5.4の代わりに私の以前の(5.3)バージョンのPHPのためにインストールしようとしていることです。peclが以前の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 

私は

$ 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 

とAPCをインストールし、これまでの私のphp.iniのphp -v変化にAPCモジュールを有効にした場合:

$ 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は私のapc拡張子を/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626にインストールし、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 

は、だから、解決策はありません。

誰かが正しい方向に向けることができますか?私は本当にここで何が起こっているのか分からない。

答えて

20

解決策はかなりシンプルでした。私は自分の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ファイルも同じです。

+2

神私のああ、ありがとう。私はこの問題を12時間にわたって戦ってきており、なぜPHP 5.5用にpeclが構築されないのか理解できませんでした。これらの2つのコマンドを実行することでそれを修正あなたは文字通り私のお尻を救った。 – atxpunkrock

27

私の場合、私はGearmanをインストールしようとしていました。

pecl install gearmanは誤ってインストールします。

PHP Extension => 20100525 

をしかし、PECLは、使用してインストールします:

php -iが表示されるでしょう

PHP Api Version:   20090626 

私のコンフィグ設定を変更した後は、使用する:

まず修正

sudo pecl config-set php_ini /etc/php.ini 
sudo pecl config-set php_bin /usr/bin/php5 

私はまだあなたがコンフィグ設定を使用してこの問題を解決することができます

WARNING: php_bin /usr/bin/php5 appears to have a suffix 5, but config variable php_suffix does not match

になるだろうことに気づいた:

これが問題だったのはなぜ

追加修正

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を実行することができます。

+1

ありがとうございました - php5-devを削除して再インストールすると、私の手口が変わりました。 Phew。 –

+0

この回答は少し違う問題を解決するために私を助けました –

+0

私はMacの誇大宣伝を得ることはありません。なぜあなたはファイルをダウンロードして、そこに叩きつけることができないのですか? –

3

PECLで使用され、ハッキングされないようにphpize拡張機能を再インストールする方がよい。

(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 
+0

これは実際には、より多くの問題を引き起こす可能性のある設定を誤ってしまうのではなく、これを修正する正しい方法です。 – Vincent

2

なし答えは(まだ)複数の "共にインストール可能な" PHPバージョンを持っていて、インストールされているすべてのPHPバージョンの特定の拡張機能をビルドしたいということに対処しているようです。私は自分自身を見つけるするシナリオを説明するために

(私はUbuntuの16.04 LTSのためオンドレイSurýPHPのPPAを使用しています):

[email protected]:~# 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のために仕事をしていませんではなく、他の人。

他のanwsersは、php*-devをアンインストール/再インストールすることはできますが、意図的にインストールされたPHPバージョンをシステムにインストールした場合は、あまりうまくいかないことを示しています。

解決策の1つは、システムに存在する各バージョンの拡張機能をビルドすることです。

このスニペットは、PHP 5.6でのビルドを示していますが、7.0と7.1で同じことを行いました。手順は同じです。

この例では、Gitリポジトリから拡張機能を複製する方法を示しますが、ソースディレクトリはすべて使用できます。

#は、あなたがルートであるか、または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 
関連する問題