?
立即学习“PHP免费学习笔记(深入)”;
2、 请在local环境,编译PHP,要求:版本5.4, 5.5, 5.6,每个版本要涵盖3个编译版本,包括nts \ zts \ debug
/usr/lib/apache2/modules
立即学习“PHP免费学习笔记(深入)”;
/etc/apache2/mods-enabled/
vim php5.load
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
.编译php的ztf,ntf,debug模式
a.安装apsx工具 apt-get install apache-dev
b.在php源码包下运行 ./configure --prefix=/home/merlin/make_php_version/php-5.4-zts-debug/ --enable-maintainer-zts --with-apxs2=/usr/bin/apxs2 --enable-debug
c.make&&make install 在/usrb/apache2/modules下生成libphp5.so文件
d.在/etc/apache2/mods-enabled下php5.load中添加模块文件.so
立即学习“PHP免费学习笔记(深入)”;
编译报错 解决 undefined reference to `libiconv_open'
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
配置文件:
在安装包中找到php.ini.development 拷贝到安装后的目录下的lib里
每次执行该版本的php 要指定目录
例如:/home/merlin/php_version/php-5.5.21-zts-debug/bin/php -i|grep php.ini
立即学习“PHP免费学习笔记(深入)”;
解决方法:
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#tar -zxvf libiconv-1.13.1.tar.gz
#cd libiconv-1.13.1
# ./configure --prefix=/usr/local/libiconv
# make
# make install
立即学习“PHP免费学习笔记(深入)”;
再检查php,指定 iconv的位置 --with-iconv=/usr/local/libiconv
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
3、 编写一个简单的PHP扩展,实现3个PHP方法,分别接收参数,并完成结果输出:
a. 数字a与数字b的,加、减、乘、除
b. 字符串a,在字符串b中的重复次数
c. 数组a与数组b的交集与差集
立即学习“PHP免费学习笔记(深入)”;
参考 http://www.laruence.com/2009/04/28/719.html
立即学习“PHP免费学习笔记(深入)”;
源码包执行
./ext_skel --extname=myfunctions --proto=myfunctions.def
立即学习“PHP免费学习笔记(深入)”;
make clean && make && make install
/etc/php5 操作ini 以及移动so文件
立即学习“PHP免费学习笔记(深入)”;
| 类型指定符 | 对应的C类型 | 描述 |
| l | long | 符号整数 |
| d | double | 浮点数 |
| s | char *, int | 二进制字符串,长度 |
| b | zend_bool | 逻辑型(1或0) |
| r | zval * | 资源(文件指针,数据库连接等) |
| a | zval * | 联合数组 |
| o | zval * | 任何类型的对象 |
| O | zval * | 指定类型的对象。需要提供目标对象的类类型 |
| z | zval * | 无任何操作的zval |
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sdd",&str,&str_len,&a,&b) == FAILURE){
return;
}
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
| 设置返回值并且结束函数 | 设置返回值 | 宏返回类型和参数 |
| RETURN_LONG(l) | RETVAL_LONG(l) | 整数 |
| RETURN_BOOL(b) | RETVAL_BOOL(b) | 布尔数(1或0) |
| RETURN_NULL() | RETVAL_NULL() | NULL |
| RETURN_DOUBLE(d) | RETVAL_DOUBLE(d) | 浮点数 |
| RETURN_STRING(s, dup) | RETVAL_STRING(s, dup) | 字符串。如果dup为1,引擎会调用estrdup()重复s,使用拷贝。如果dup为0,就使用s |
| RETURN_STRINGL(s, l, dup) | RETVAL_STRINGL(s, l, dup) | 长度为l的字符串值。与上一个宏一样,但因为s的长度被指定,所以速度更快。 |
| RETURN_TRUE | RETVAL_TRUE | 返回布尔值true。注意到这个宏没有括号。 |
| RETURN_FALSE | RETVAL_FALSE | 返回布尔值false。注意到这个宏没有括号。 |
| RETURN_RESOURCE(r) | RETVAL_RESOURCE(r) | 资源句柄。 |
php -i | grep php.ini
1、 请具体叙述PHP的运行机制(细到多深看你心情, 呵);
PHP从下到上是一个4层体系:
版权声明:本文为博主原创文章,未经博主允许不得转载。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号