PHP C拡張に関する予備調査

WBOY
WBOYオリジナル
2016-07-29 08:55:381670ブラウズ

手順

環境:

<code> ubuntu14.4 
 php5.5.9 通过apt-get 安装
</code>

コンパイルしてインストールしたphpとは異なるため、展開するにはphpのソースコードを再ダウンロードする必要があります。

rreee

保存ディレクトリはカスタマイズ可能です
ソースコードファイルを開き、「ext」と入力します。ここに拡張機能がたくさんあることがわかります
ここでは、PHP ソース コードの主要なディレクトリと関数について学ぶことができます
./main には PHP のメインマクロ定義が含まれます
./pear には PEAR コア ファイルが含まれています
./sapi には、さまざまなサーバー抽象化レイヤー コードが含まれています
./Zend にはエンジンのすべてのファイルが含まれています
コンパイルとインストール中に組み込まれる php-dev パッケージを使用する必要があります
$sudo apt-get install php5-dev$sudo apt-get install php5-dev
$phpize-v$phpize-v
インストールが成功したかどうかを確認します

正式に拡張を開始します

ext_skelを使用しますこのファイルはextディレクトリにあります
$./ext_skel --extname=newext
このコマンドは多くのチュートリアルで使用されますが、使用中に後続のプロセスで newext.c ファイルが見つからないことがわかりました
今操作を検索すると、「Cannot open /skeleton.c: No such file」と表示されることがわかります。ext_skel

PHP  C扩展初探
を見ると、skeleton.c が見つからないことがわかります。 したがって、skelのパスを指定する必要があります
元の newext ディレクトリを削除して、もう一度実行します
$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
成功したら戻ります
PHP  C扩展初探

プロンプトに従って、/newext2/config.m4 のコメントを変更する必要があります
PHP  C扩展初探

<code>$ <span>sudo</span> apt-get <span>source</span> php5 </code>

ここで、make 不規則なエラーがある場合は、 php-config パスは正しいです
コンパイルが成功すると、次のようになります
PHP  C扩展初探

<code><span>$cd</span> newext2
<span>$phpize</span>
$<span>.</span>/configure <span>--</span><span>with</span><span>-php</span><span>-config</span><span>=</span>/usr/bin/php<span>-config</span><span>$make</span></code>

次に、php.ini ファイルを変更します
拡張子 = newext2.so を追加します
cli モードと CGI モードの php.ini ファイルは異なることに注意してください。最初に実験を開始したとき、cli モードで

<code><span>$make</span> test 
<span>$make</span> install</code>

を使用すると newext2
の拡張子が見つからないことがわかりました。 後で、CGI の下に phpinfo を出力すると、それが表示されます
その後、cli で phpinfo を出力し、php.ini へのパスを見つけて修正し、最終的に成功しました
コンソールの phpinfo 出力が大きすぎる場合は、次の方法を使用できます

<code><span>$usr</span>/bin/php <span>-m</span></code>

パスを見つけて変更します
PHP  C扩展初探
変更後はApacheを再起動することを忘れないでください

インターネット上に関連するチュートリアルがたくさんあります。「PHPと新しいテクノロジーとベストプラクティス」の第7章を参考に、特に非コンパイルの場合に実際の操作で遭遇した問題をまとめました。 PHP のインストール この場合、主なことは設定ファイルのパスの問題に注意することです。

')​​.addClass('事前番号付け').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

上記では、PHP C 拡張機能に関する予備的な研究を、その側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP 関数の分割次の記事:PHP 関数の分割