PHP7の新しい拡張機能

WBOY
リリース: 2016-06-20 12:33:32
オリジナル
971 人が閲覧しました

1. PHP7 開発環境の設定が完了しました。

1.1 centos のインストール ソースを確認します

yum list installed | grep php
ログイン後にコピー

古いものが見つかった場合は、削除します:

 yum remove php*
ログイン後にコピー

1.2 新しいインストールソースを追加します

# CentOS 5.Xrpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm# CentOs 6.xrpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm# CentOs 7.Xrpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
ログイン後にコピー

上記のインストールパッケージを削除したい場合:

rpm -qa | grep webstatic
ログイン後にコピー

1.3 インストールPHP 開発環境

 yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-devel.x86_64
ログイン後にコピー

2. 対応するバージョンの PHP ソース コードをダウンロードします

cd php_src/ext/./ext_skel --extname=hello
ログイン後にコピー

ソース コードの ext ディレクトリに入り、新しい hello プラグインを作成します。extname パラメータの値は拡張機能の名前です。 ext_skelコマンドを実行すると、カレントディレクトリに同じ拡張子のディレクトリが生成されます。

3. config.m4 設定ファイルを変更します

cd hellovim config.m4
ログイン後にコピー

config.m4 ファイルを開くと、次の内容が表示されます。

dnl If your extension references something external, use with:    dnl PHP_ARG_WITH(say, for say support, dnl Make sure that the comment is aligned: dnl [  --with-say             Include say support])  dnl Otherwise use enable:  dnl PHP_ARG_ENABLE(say, whether to enable say support, dnl Make sure that the comment is aligned: dnl [  --enable-say           Enable say support])
ログイン後にコピー

ここで、dnl は注釈シンボルです。

上記のコードは、作成した拡張機能が他の拡張機能または lib ライブラリに依存している場合、PHP_ARG_WITH 関連コードのコメントを削除する必要があることを示しています。

それ以外の場合は、PHP_ARG_ENABLE 関連のコード セグメントのコメントを解除します。私たちが作成する拡張機能は、他の拡張機能や lib ライブラリに依存する必要はありません。したがって、PHP_ARG_ENABLE の前のコメントを削除します。

コメントを削除した後のコードは次のとおりです。

dnl If your extension references something external, use with:    dnl PHP_ARG_WITH(say, for say support, dnl Make sure that the comment is aligned: dnl [  --with-say             Include say support])  dnl Otherwise use enable:  PHP_ARG_ENABLE(say, whether to enable say support, Make sure that the comment is aligned: [  --enable-say           Enable say support])
ログイン後にコピー

4. コードを変更します

hello.c ファイルで hello() 関数を実装します。PHP_FUNCTION(confirm_hello_compiled) を見つけて、上に次の内容を追加します。

PHP_FUNCTION(hello){        zend_string *strg;        strg = strpprintf(0, "hello word,dingdayu");        RETURN_STR(strg);}
ログイン後にコピー

PHP_FUNCTION は、括弧内の関数名で定義します。 PHP 内部関数を使用し、次の変更を使用して関数をプラグインの外部に公開します。

PHP_FE(confirm_hello_compiled を見つけて、上記のコードを追加します:

PHP_FE(hello, NULL)
ログイン後にコピー

変更された効果:

const zend_function_entry hello_functions[] = {     PHP_FE(hello, NULL)       /* For testing, remove later. */     PHP_FE(confirm_hello_compiled,    NULL)       /* For testing, remove later. */     PHP_FE_END  /* Must be the last line in say_functions[] */ }; /* }}} */
ログイン後にコピー

上記のコードの「confirm_hello_compiled」はテスト関数であり、実際のプロジェクトでは削除できます

5.

phpize./configuremakemake test# 会提醒输入邮箱make install# 会提示编译后输入的目录 目测:/lib64/php/modules/hello.so
ログイン後にコピー

<🎜 をコンパイルします。 >

6. 設定を追加します

[hello]extension = hello.so
ログイン後にコピー

7. 効果をテストします

php -m "ロードされた拡張機能を表示します。ただし、php-cli コマンドと Web PHP 設定ファイルが同じ設定ファイルではない場合、エラーが発生する可能性があることに注意してください。最初に phpinfo を通じて Web PHP 設定ファイルを確認することをお勧めします。 (); 次に、「php --ini」を使用して php-cli 設定ファイルを表示します。

ホスト Web の php-fpm がコンパイルされ、php-cli が yum を通じてインストールされるため、

/etc/php.ini/usr/local/php7/etc/php.ini
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート