开发的第一个PHP扩展
下载php源码php-5.4.23.tar.gz,解压,进入/home/hubo/php-5.4.23/ext/扩展目录 wget http://cn2.php.net/get/php-5.4.23.tar.gz/from/this/mirror tar -xzvf php-5.4.23.tar.gz cd php-5.4.23/ext/ 在ext目录中新建config.m4文件 PHP_ARG_ENABLE(heiyoubo,
下载php源码php-5.4.23.tar.gz,解压,进入/home/hubo/php-5.4.23/ext/扩展目录
wget http://cn2.php.net/get/php-5.4.23.tar.gz/from/this/mirror
tar -xzvf php-5.4.23.tar.gz
cd php-5.4.23/ext/
在ext目录中新建config.m4文件
<span>PHP_ARG_ENABLE(heiyoubo, [Whether to enable the </span><span>"</span><span>heiyoubo</span><span>"</span><span> extension], [ enable</span>-heiyoubo Enable <span>"</span><span>heiyoubo</span><span>"</span><span> extension support]) </span><span>if</span> test $PHP_HEIYOUBO != <span>"</span><span>no</span><span>"</span>; <span>then</span><span> PHP_SUBST(HEIYOUBO_SHARED_LIBADD) PHP_NEW_EXTENSION(heiyoubo, heiyoubo.c, $ext_shared) </span><span>fi</span>
在ext目录中新建heiyoubo.c文件
<span>#ifdef HAVE_CONFIG_H #include </span><span>"</span><span>config.h</span><span>"</span> <span>#endif</span> <span>//</span><span>加载php头文件</span> #include <span>"</span><span>php.h</span><span>"</span> <span>#define</span> phpext_heiyoubo_ptr &heiyoubo_module_entry<span> ZEND_FUNCTION(heiyoubo_hello) { php_printf(</span><span>"</span><span>Hello World Heiyoubo!\n</span><span>"</span><span>); } </span><span>static</span> zend_function_entry heiyoubo_functions[] =<span> { ZEND_FE(heiyoubo_hello, NULL) { NULL, NULL, NULL } }; </span><span>//</span><span>module entry</span> zend_module_entry heiyoubo_module_entry =<span> { </span><span>#if</span> ZEND_MODULE_API_NO >= 20010901<span> STANDARD_MODULE_HEADER, </span><span>#endif</span> <span>"</span><span>heiyoubo</span><span>"</span>, <span>//</span><span>这个地方是扩展名称,往往我们会在这个地方使用一个宏。</span> heiyoubo_functions, <span>/*</span><span> Functions </span><span>*/</span><span> NULL, </span><span>/*</span><span> MINIT </span><span>*/</span><span> NULL, </span><span>/*</span><span> MSHUTDOWN </span><span>*/</span><span> NULL, </span><span>/*</span><span> RINIT </span><span>*/</span><span> NULL, </span><span>/*</span><span> RSHUTDOWN </span><span>*/</span><span> NULL, </span><span>/*</span><span> MINFO </span><span>*/</span> <span>#if</span> ZEND_MODULE_API_NO >= 20010901 <span>"</span><span>2.1</span><span>"</span>, <span>//</span><span>这个地方是我们扩展的版本</span> <span>#endif</span><span> STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_HEIYOUBO ZEND_GET_MODULE(heiyoubo) </span><span>#endif</span>
运行phpize,准备 PHP 扩展库的编译环境
[hubo@test15169x ~/php-5.4.23/ext]$ /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
configure的时候要开启heiyoubo扩展,并且指定php-config的目录,获取所安装的 PHP 配置的信息
[hubo@test15169x ~/php-5.4.23/ext]$ ./configure --enable-heiyoubo --with-php-config=/usr/local/php/bin/php-config
[hubo@test15169x ~/php-5.4.23/ext]$ make
[hubo@test15169x ~/php-5.4.23/ext]$ make test
heiyoubo.so扩展已经生成到module目录
[hubo@test15169x ~/php-5.4.23/ext]$ ll modules/*
-rw-rw-r-- 1 hubo hubo 799 01-09 16:53 modules/heiyoubo.la
-rwxrwxr-x 1 hubo hubo 26K 01-09 16:53 modules/heiyoubo.so
将heiyoubo.so文件拷贝到php的扩展目录
[hubo@test15169x ~/php-5.4.23/ext]$ php -ini | grep extension_dir
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525
[hubo@test15169x ~/php-5.4.23/ext]$ cp modules/heiyoubo.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
将heiyoubo.so加到php的扩展文件/usr/local/etc/cgi/php.ini中 extension = "heiyoubo.so"
[hubo@test15169x ~/php-5.4.23/ext]$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/cgi
Loaded Configuration File: /usr/local/etc/cgi/php.ini
[hubo@test15169x ~/php-5.4.23/ext]$ php -r 'var_dump(get_loaded_extensions());' | grep heiyoubo
string(8) "heiyoubo"
验证安装成功。执行C扩展中函数heiyoubo_hello();执行成功
[hubo@test15169x ~/php-5.4.23/ext]$ php -r 'heiyoubo_hello();'
Hello World Heiyoubo!
参考链接:
http://www.php.net/manual/zh/internals2.buildsys.configunix.php
https://github.com/walu/phpbook/blob/master/5.1.md 《Extending and Embedding PHP》中文版翻译 PHP扩展开发及内核应用
http://www.laruence.com/2009/04/28/719.html
http://www.php-internals.com/

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.
