web-dev-qa-db-ja.com

phpizeのPHP Apiバージョンを設定する方法

サーバーでphpをアップグレードしていますが、phpizeと外部モジュールのコンパイルで問題が発生しています。 phpize -vレポート:

Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20090115
Zend Extension Api No:   220090115

しかし、私のテストサーバー(私が複製しようとしている)では、これを取得します:

Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

私はdebiansqueezeを実行しており、実験リポジトリからphp5.3.0-2パッケージをプルしています。 2つのサーバーの違いは、最初のサーバーには古いバージョンのphpがあり、テストサーバーは最初からphp5.3.0-2でインストールされていたことです。

最初のサーバーからすべてのPHPパッケージをアンインストールし(--purgeを使用してすべての構成ファイルを削除))、5.3を新しく再インストールしようとしましたが、それでも同じです問題。助けて!

4
Tom Frost

これを自分で解決しました-php5-dev5.3をインストールすると、phpizeとphpize5が得られます。 phpize5にはすべての最新のAPIがあります。それでも、デフォルトのphpizeを取得してそれを実現する方法を知りたいのですが、少なくとも、シンボリックリンクは必要ありません。

9
Tom Frost

方法:

phpizeは単純なシェルスクリプトであり、その動作を確認できます。 --versionで呼び出されると、これが行われます。簡潔にするために、かなりの部分を省略しました。

prefix='/usr/lib/php5'
includedir="`eval echo ${prefix}/include`/php"
SED="/bin/sed"
..
PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`
ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'`
ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'`
..
echo "PHP Api Version:        "$PHP_API_VERSION
echo "Zend Module Api No:     "$ZEND_MODULE_API_NO
echo "Zend Extension Api No:  "$ZEND_EXTENSION_API_NO

上部のprefix変数は、PHPがコンパイルされると、ハードセットされます。/usr/lib/php5は、そのマシンのインストール場所です。phpizeはすべてそのプレフィックスでインストールするためのヘッダーファイルを見てください。あなたのphpize5phpizeへの完全に異なるパスを持っていると思います。

なぜ:

おそらく、インストールで古いバージョンと新しいバージョンを区別したいので、そのうちの1つに名前を変更しました。これは、以前に同じマシンに4.xリリースがインストールされていた結果である可能性があります。

3
Dan Carley

これはコメントであるはずですが、コメントリンクが見つかりません。それは実際には前の答えへの応答です。

では、phpizeファイルはPHPのコンパイルの副作用として、システム用にカスタムビルドされていると思いますか?たぶん、私が使用したMacポートプロシージャはプリコンパイルされたバイナリをプルしたので、phpize5を持っていません。私はそれがどのように機能するのか本当にわかりません。しかし、あなたが暗示しているのは、phpizeをハックして、PHPの新しいインストールを指すようにすると、一致する正しいAPI番号がプルされるということですか?確認してください。そこに変更するものがたくさんあります!私はむしろ、何かがどこにあるかについて質問するプログラムを実行してもらいたいので、変更が必要なすべてのものを確実に変更します。

0
Colleen Kitchen