web-dev-qa-db-ja.com

モジュールとPHPのAPIがPHP設定を変更した後に一致しないため、Apacheは「モジュールを初期化できません」

php -vはこれを与えます

PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
bogus test name tests/

追伸PHP 5.2から5.3にアップグレードしました。この前にすべてがうまくいきました。

35
soshial

PHPのバージョンを更新する場合(特にバージョンXYからバージョンXZに移行する場合)PHP拡張機能も同様です。


これは、PHP拡張がCで開発され、PHPの内部に「近い」ためです。つまり、これらの内部のAPIが変更された場合、拡張は再コンパイルして、新しいバージョンを使用します。

また、PHP 5.2とPHP 5.3の間では、覚えていることですが、PHPエンジンで使用される内部データ構造にいくつかの変更がありました。 -それらのデータ構造の新しいバージョンと一致するためにコンパイルされます。


PHP拡張機能の更新方法は、使用しているシステムによって異なります。

Windowsを使用している場合は、いくつかの拡張機能の.dllをここで見つけることができます。 http://downloads.php.net/pierre/
さまざまなバージョンの詳細については、 windows.php.net の左側のサイドバーに記載されている内容をご覧ください。

Linuxを使用している場合は、次のいずれかを行う必要があります。

  • ディストリビューションが提供するものを確認してください
  • または、peclコマンドを使用して、問題の拡張機能のソースを再ダウンロードし、再コンパイルします。
34
Pascal MARTIN

ただ

pecl uninstall module_name

それから

pecl install module_name
7
Bảo Nam

問題はphp5-devパッケージ内にあります。古いlinuxバージョンのphp5.2からphp5.3に移行したと思います。私は同じことをしましたが、PHP 5.3をインストールできたとき、php5-devと競合がありました。何らかの理由で、新しいバージョンにアップグレードされません。 Dunnoがその理由であり、私は気にしませんが、これにより、拡張機能が古いAPIバージョンでコンパイルされ、php ofcは新しいAPIバージョンでコンパイルされます。この問題を解決するために私がしたことは:

Sudo apt-get remove php5-devでphp5-devを削除した後、Sudo apt-get autoremoveを実行して問題を引き起こしている残り物を取り除き、その後php5-devを再度インストールしました。 Sudo apt-get install php5-dev

それが完了したら、Sudo pecl uninstall memcacheでmemcacheを削除し、Sudo pecl install memcacheで再度インストールしました。これで、モジュールとphpの両方が同じAPIバージョンを使用したため、問題が解決したことがすぐにわかりました。

それが役に立てば幸い。

6

モジュールがインストールされている可能性がありますが、PHP.iniは引き続き古いディレクトリを指します。

/ usr/lib/php/extensionsの内容を確認してください。私の場合、no-debug-non-zts-20060613と​​no-debug-non-zts-20060613の2つのディレクトリがありました。 php.iniの428行目付近を変更します。

extension_dir = "/ usr/local/lib/php/extensions/no-debug-non-zts-20060613"

extension_dir = "/ usr/local/lib/php/extensions/no-debug-non-zts-20090626"

次に、Apacheを再起動します。これで問題が解決するはずです。

3
apkostka

私はこの問題に長い間苦労し、configureを実行するときに、正しいphp-configツールへのパスを渡すだけであることがわかりました。

私の場合、それは

./configure --with-php-config=/usr/local/zend/bin/php-config 

...不明な場合は、マシンでlocate php-configを実行し、インストールされているさまざまなバージョンの中から適切なものを見つけます。

これが将来誰かを助けることを願っています。

PS。デフォルトのphp-configは2009_926に設定されていました。これはPHP 5.3です。 PHP 5.4の./configure wasのパラメーターとして手動で入力したもの(2010 ...)

2
Andrew

PHP 5.5からPHP 5.6。phpizeおよびphp-config phalcon拡張モジュールのコンパイルに使用されているライブラリは、まだPHP 5.5。以下のコマンドを実行する必要がありました。

Sudo apt-get install php5.6-dev

長いスタックトレースがあるでしょう、私が見た重要な情報はこれでした:

update-alternatives: using /usr/bin/php-config5.6 to provide /usr/bin/php-config (php-config) in auto mode
update-alternatives: using /usr/bin/phpize5.6 to provide /usr/bin/phpize (phpize) in auto mode

これが誰かの助けになることを願っています。

1
Goke Obasa

Php.iniでこの部分を有効にしました

 extension=php_memcache.dll
    [Memcache]
    memcache.allow_failover = 1
    memcache.max_failover_attempts=20
    memcache.chunk_size =8192
    memcache.default_port = 11211

これらの行をコメントした後composerは私のウィンドウ10にインストールされました

1
vicky shrestha

この問題は私に起きたばかりで、memory_limitを32 Mから64 Mに増やすだけで解決されました。php.iniが存在するファイルの値を調整できます。

php.iniを見つけて適切なファイルを選択し、memory_limitを検索します。変更後、Apache /etc/init.d/httpd restartを再起動する必要があります

ではごきげんよう。

0

私の場合、php.ini

[CLDbg]
extension=php_cl_dbg_5_3_VC9.dll
clport=6000

異なるバージョンPHP=をサポートするCodelobsterを削除したため、以下に更新する必要があります。

[CLDbg]
;extension=php_cl_dbg_5_3_VC9.dll
;clport=6000
0
xsor

モジュールを再コンパイルした後でも同じエラーが発生します。

しかし、phpizeの絶対パスを指定するだけで解決しました。

0
Hugo Bulthé

Phpizeする前に、新しいPHPを指すようにパス($ PS1)を更新してください! phpizeは環境を使用しますが、パスまたは環境の他の部分に古いPHP

0

これがphp 5.5で動作するものです。 xampp 1.8.3を here からダウンロードし、memcache dllを here からダウンロードします

0
user2289259

私の場合、バージョン5.4.45のphpをインストールするためにlnmpを使用しました。しかし、おそらくlnmpの後にphp5-devをインストールしたため(lnmpをインストールした場合は必要ないでしょう)、phpizeとphp-configの両方がphpよりも古いバージョンのツールを指しています。
/etc/alternatives/phpizeおよび/etc/alternatives/php-configのソフトリンクを/usr/local/php/bin/phpizeおよび/usr/local/php/bin/php-configに変更することでこれを解決しました。
これが役立つことを願っています。

0
YouCL