linux下 C语言对 php 扩展_php技巧

一,搭建php环境
下载php 5.2.6 源码 并解压
编译安装,搭建php环境

二,创建扩展项目

进入源码目录
cd php5.2.6/ext/
./ext_skel --extname=my_ext
创建名字为my_ext的项目,最终会生成my_ext.so

三,更改配置和程序
$ vi ext/my_ext/config.m4

根据你自己的选择将

dnl PHP_ARG_WITH(my_ext, for my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --with-my_ext             Include my_ext support])
修改成

PHP_ARG_WITH(my_ext, for my_ext support,
Make sure that the comment is aligned:

[  --with-my_ext             Include my_ext support])
或者将

dnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --enable-my_ext           Enable my_ext support])
修改成

PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,

Make sure that the comment is aligned:
[  --enable-my_ext           Enable my_ext support])

$ vi ext/my_ext/php_my_ext.h


PHP_FUNCTION(confirm_my_ext_compiled);       /* For testing, remove later. */
更改为
PHP_FUNCTION(say_hello);    

$ vi ext/my_ext/my_ext.c


zend_function_entry php5cpp_functions[] = {
        PHP_FE(confirm_my_ext_compiled,      NULL) /* For testing, remove later. */
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};
更改为
zend_function_entry php5cpp_functions[] = {
        PHP_FE(say_hello,       NULL)         
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};

在最后添加:
PHP_FUNCTION(say_hello)
{
        zend_printf("hello world\n");
}

四,编译
$ cd my_ext
$ /usr/local/php/bin/phpize
ps: 如果出现:Cannot find autoconf.……的错误信息,则需要安装 autoconf (安装过程略)
$ ./configure  --with-php-config=/usr/local/php/bin/php-config
$ make

这时会编译出 my_ext/modules/my_ext.so

五,配置php.ini
将my_ext.so放入/usr/local/php/ext/目录

$ vi php.ini

修改添加如下:
extension_dir = '/usr/local/php/ext/'
extension=my_ext.so  

六,测试
$ vi test.php
<?php
   say_hello();
?>

$ /usr/local/php/bin/php test.php
hello world.

则大功告成

ps:如有问题请留言,大家共同探讨

时间: 2024-10-01 09:05:09

linux下 C语言对 php 扩展_php技巧的相关文章

mac系统下为 php 添加 pcntl 扩展_php技巧

前言: pcntl 介绍 pcntl扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘记添加某扩展,后来想添加该扩展,即可以使用 phpize 动态的添加该扩展. 本文将介绍如何使用 phpize 给 Mac下的集成环境 MAMP 添加 PHP 的 pcntl 扩展.类 Unix 的环境都可以使用本方法安装,注意灵活变通. 安装: 下载和本地 PHP 版本对应的源码包,地址为: htt

解析Linux下Varnish缓存的配置优化_php技巧

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. 但与老牌的squid相比,各有各的优劣势,网上大量的相对比较只是在其个人对自己熟悉的应用的最大使用上的发挥而已,可能squid到了有能力的人手上才足以发挥最强大的威力Varnish采用了"Visual Page Cache"技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存.磁盘中交换文件

解析linux下安装memcacheq(mcq)全过程笔记_php技巧

memcacheQ是一个单纯的分布式消息队列服务.一,MEMCACHEQ的应用背景Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too manyconnections错误.通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力.在Web2.0的时代,高并发的情况越来越常见,从而使消息队列有成为居家必备的趋势,相

linux下安装php的memcached客户端_php技巧

下面将介绍安装php的memcached客户端安装步骤 1.下载安装libmemcached客户端 官网地址:http://libmemcached.org/libMemcached.html $wget -c https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz #亲 千万不要下载1.0.17哦 有bug $tar -zxvf libmemcached-1.0.16.tar.gz $

《Linux 高级程序设计(第三版)》——第2章 Linux下C语言开发工具 2.1 常用编辑工具

第2章 Linux下C语言开发工具 Linux 高级程序设计(第三版) Linux操作系统绝大多数的内核代码都是由C语言编写,因此,在Linux下的应用程序,特别是需要与内核进行交互的程序一般都是由C语言编写的,C++程序并不多见,例如驱动开发几乎都是由C语言编写的.因此,本书所有内容都立足于Linux下的C程序开发.本章主要介绍Linux下进行C语言程序开发所必备的工具. 本章第1节主要介绍Linux环境下常用的开发工具,包括常用的编辑器.这些编辑器类似于Windows平台下的记事本和Word

Linux下编译安装php libevent扩展实例

 这篇文章主要介绍了Linux下编译安装php libevent扩展实例,本文着重讲解了编译过程中一个错误解决方法,需要的朋友可以参考下     原本想尝试一下PHP编写高性能网络服务,需要安装libevent扩展,没想到让人很费了点脑袋 先下载libevent扩展: http://pecl.php.net/package/libevent 解压后,开始编译 代码如下: $ cd libevent-version $ /usr/local/php/bin/phpize $ ./configure

《嵌入式 Linux C 语言应用程序设计(修订版)》——第 2 章 嵌入式Linux C语言开发工具 2.1 嵌入式Linux下C语言概述

第 2 章 嵌入式Linux C语言开发工具 本章目标 任何应用程序的开发都离不开编辑器.编译器及调试器,嵌入式Linux的C语言开发也一样,它也有一套优秀的编辑.编译及调试工具. 掌握这些工具的使用是至关重要的,它直接影响到程序开发的效率.因此,希望读者能自己动手操作,切实熟练掌握这些工具的使用.通过本章的学习,读者将会掌握如下内容: 2.1 嵌入式Linux下C语言概述 读者在第一章中已经了解了嵌入式开发的基本流程,在嵌入式系统中应用程序的主体是在宿主机中开发完成的,就嵌入式Linux而言,

c语言-Linux下C语言项目,怎么基于不同宏值定义组合,自动化编译

问题描述 Linux下C语言项目,怎么基于不同宏值定义组合,自动化编译 一个Linux下的C语言项目,希望通过Macro实现每个功能模块都能自由打开/关闭,例如: #define FEATURE_A 1 // 如果想关闭Feature_A,请定义为0 #define FEATURE_B 1 // 如果想关闭Feature_B,请定义为0 #define FEATURE_C 1 // 如果想关闭Feature_C,请定义为0 默认情况下,Feature A/B/C都是打开的,也就是都定义为1.但是

linux下c语言大内存分配

问题描述 linux下c语言大内存分配 远程登录工作站(64G)c语言分配12G内存失败 代码如下 #include<stdio.h> #include<string.h> #include<malloc.h> int main() { char *x=NULL; x=(char *)calloc(3001*3001*1200,sizeof(char)); if(x==NULL) printf("failed"); else printf("