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