ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能、helloworld_PHP チュートリアルの実装

PHP 拡張機能、helloworld_PHP チュートリアルの実装

WBOY
WBOYオリジナル
2016-07-13 09:56:14903ブラウズ

php 拡張機能、helloworld の実装



php -v
PHP 5.5.9-1ubuntu4.7 (cli) (ビルド: 2015 年 3 月 16 日 20:47:39)
Copyright (c) 1997-2014 PHP グループ
Zend エンジン v2.5.0、著作権 (c) 1998-2014 Zend Technologies
Zend OPcache v7.0.3 を使用、著作権 (c) 1999-2014、Zend Technologies
Xdebug v2.2.3 を使用、著作権 (c) 2002-2013、Derick Rethans 著

構成参考記事: http://blog.csdn.net/niijiaming0819/article/details/8543028
この記事でも、参照記事の手順を使用して、このマシンにプロセスを実装します

ステップ1. phpのソースコードパッケージをダウンロードする 今回はphp5.6.8バージョンを使用します。 ステップ 2. 圧縮パッケージを解凍し、解凍されたパッケージ (mysoft$ cd php-5.6.8/) を入力します。同じ ls コマンドを使用して、ソース パッケージ内のファイル ディレクトリを表示し、ext フォルダー (cd ext) に入ります。


PHP 拡張機能、helloworld_PHP チュートリアルの実装 ステップ 3. 拡張機能開発フレームワークを確立する

./ext_skel --extname=helloworld 上記のコマンドを実行して拡張開発のフレームワークを確立すると、ext フォルダーの下に helloworld という追加フォルダーがあり、いくつかのテキストもコマンド ラインから出力されることがわかります。 拡張機能を生成するための一般的な手順が表示されます。

PHP 拡張機能、helloworld_PHP チュートリアルの実装


PHP 拡張機能、helloworld_PHP チュートリアルの実装


ステップ 4.
PHP ソースコードのルートディレクトリに入り、ファイル vim ext/helloworld/config.m4 を編集します

このファイルの 16 行目から 19 行目までの数行のコメントを削除して、ファイル (:wq) を保存します。

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 5.

PHP ソースコードのルートディレクトリでコマンド ./buildconf --force

を実行します。

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 6.

PHP ソース コードのルート ディレクトリで PHP プログラムをコンパイルします。コマンドは ./configure --with-helloworld

であることに注意してください。

最後に発生したエラーは処理されませんでした

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 7. PHP 拡張機能、helloworld_PHP チュートリアルの実装拡張機能ディレクトリ helloworld に入り、phpize コマンドを実行します (sudo apt-get install php5-dev を通じて phpize をインストールします)。この時点で、拡張機能ディレクトリには、後のコンパイルに使用できる多くのファイルが生成されます。

ステップ 8.PHP 拡張機能、helloworld_PHP チュートリアルの実装 helloworld ディレクトリで拡張機能をコンパイルします。/configure --with-php-config=/usr/bin/php-config (独自の環境の php-config を使用します) --enable-helloworld

図に示すように、コマンド (find / -name php-config) を使用して php-config ファイルの場所を見つけることができます: 私のアドレスは /usr/bin/php-config です

PHP 拡張機能、helloworld_PHP チュートリアルの実装

PHP 拡張機能、helloworld_PHP チュートリアルの実装ステップ 9. 拡張機能 helloworld ディレクトリに入り、ファイル php_helloworld.h を編集し、関数 PHP_FUNCTION(helloworldTest);

を最後の行に追加します。

helloworldTest はお好みの名前に変更し、保存して終了します

PHP 拡張機能、helloworld_PHP チュートリアルの実装ステップ 10. vim を使用して helloword.c を開き、helloworld.c に関数を実装してから、helloworldTest 関数を helloworld_functions[] に追加し、保存して終了します

PHP 拡張機能、helloworld_PHP チュートリアルの実装

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 11. make コマンド make を実行して拡張機能をコンパイルします。比較的スムーズに実行できました。エラーが発生した場合は、前の手順に誤りがあるかどうかを注意深く確認してください。私も初めて実行したときに、通常、前の手順に問題がありました。

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ12. コンパイルされたhelloworld.soファイルをローカルのphp拡張ディレクトリにコピーします

拡張子ディレクトリは、php -r phpinfo() を介して表示でき、ネイティブ php の拡​​張子パスを表示します

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 13. helloworld.so 拡張機能を有効にするように php.ini を設定します

php.iniの場所を表示します(php -r phpinfo(); | grep php.ini )

PHP 拡張機能、helloworld_PHP チュートリアルの実装

vim sudo vim /etc/php5/cli/php.ini で php.ini ファイルを開きます

ファイルの最後に拡張子(extension=helloworld.so)を追加します

php -r phpinfo() によってテストされました

PHP 拡張機能、helloworld_PHP チュートリアルの実装

ステップ 14. テスト拡張機能 (php -r echo helloworldTest();)

PHP 拡張機能、helloworld_PHP チュートリアルの実装

このプロセスでは、元の作成者の手順に従ってみましたが、エラーが発生しました

セグメンテーション違反」(コアダンプ)

デバッグ後、元の作成者は helloworld.c ファイルに helloworld_functions[] を追加するときに PHP_FE_END を {null, null, null} に変更しましたが、エラーは発生しませんでしたが、変更後に PHP_FE_END もコメントしました。再コンパイルしてコピーします。





www.bkjia.com本当http://www.bkjia.com/PHPjc/989127.html技術記事 PHP 拡張機能、helloworld php -v の実装 PHP 5.5.9-1ubuntu4.7 (cli) (ビルド: 2015 年 3 月 16 日 20:47:39) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0、Copyright (c) 1998-2...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。