サーチ…


Linuxでのコンパイル

典型的なLinux環境でPHP拡張モジュールをコンパイルするには、いくつかの前提条件があります。

  • 基本的なUnixスキル( "make"とCコンパイラを操作できる)
  • ANSI Cコンパイラ
  • コンパイルしたいPHP拡張モジュールのソースコード

一般に、PHP拡張モジュールをコンパイルするには2つの方法があります。 PHPバイナリに拡張を静的にコンパイルすることも、起動時にPHPバイナリによってロードされる共有モジュールとしてコンパイルすることもできます。共有モジュールは、PHPバイナリ全体を再構築することなく、拡張機能の追加や削除を可能にする可能性が高いためです。この例では、共有オプションに焦点を当てます。

あなたのパッケージマネージャー( apt-get installyum installなど) -devでPHPをインストールした場合は、PHP用の-devパッケージをインストールする必要があります。これには、ビルド環境を動作させるために必要なPHPヘッダーファイルとphpizeスクリプト。このパッケージは、 php5-devphp7-devような名前が付けられますが、ディストリビューションのリポジトリを使って適切な名前を検索するには、パッケージマネージャを使用してください。彼らは違うかもしれません。

ソースからPHPをビルドした場合、ヘッダファイルはシステム上に既に存在する可能性があります( 通常/usr/includeまたは/usr/local/include )。

コンパイルの手順

コンパイルするのに必要なすべての前提条件があることを確認した後、 pecl.php.netに行き 、コンパイルする拡張を選択して、タールボールをダウンロードします。

  1. タールボールを解凍します(例: tar xfvz yaml-2.0.0RC8.tgz
  2. アーカイブが解凍されたディレクトリを入力し、 phpizeを実行しphpize
  3. すべてがうまくいけば、新しく作成された.configureスクリプトが表示されます。それを実行します./configure
  4. 今度は、 makeを実行make必要があります。makeは拡張機能をコンパイルします
  5. 最後に、 make installは、コンパイルされた拡張バイナリを拡張ディレクトリにコピーします

make install手順は、通常、拡張機能がコピーされた場所のインストールパスを提供します。これは通常 /usr/lib/にあります。例えば、 /usr/lib/ /usr/lib/php5/20131226/yaml.soようなものです。しかし、これはPHPの設定(つまり--with-prefix )と特定のAPIバージョンに依存します。 API番号は、異なるAPIバージョン用に構築された拡張機能を別々の場所に保存するためのパスに含まれています。

PHPでのエクステンションの読み込み

PHPでextension=yaml.soを読み込むには、該当するSAPI用の読み込んだphp.iniファイルを探し、 extension=yaml.soを追加してPHPを再起動します。 yaml.soを実際にインストールした拡張yaml.soの名前に変更します。

Zendエクステンションの場合、共有オブジェクトファイルへのフルパスを指定する必要があります。しかし、通常のPHP拡張モジュールの場合、このパスはロードされた構成のextension_dirディレクティブか、初期設定時の$PATH環境から派生しています。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow