freeBSD 安装php扩展:iconv

对于Linux下安装php扩展的教程,请参考这里:http://blog.haohtml.com/index.php/archives/6118

FreeBSD上默认安装php的时候不会带iconv扩展,因此不会有iconv这个函数。
利用port方式安装(如果系统上没有port树,参考freeBSD 利用portsnap更新port,利用portsnap获取一份最新的port树),过程如下:
获取php5源文件包

#cd /usr/ports/lang/php5
#make fetch

默认情况下,源码包会下载到/usr/ports/distfiles/目录下 Continue reading

Windows 下为PHP添加扩展模块初探

说明:

本人新手,虽然用过很长时间的php,也写过一些简单php程序,但是一直没有对php的扩展模块有过研究。最近因为开发需要,要给一些php应用扩展功能,虽然手边有以前开发好的C程序,用popen等运行之也可以使用,但是从效率、调用便捷性、代码完整性等方面考虑总是觉得popen方式有些不妥,因此萌生了写个扩展模块的念头。于是乎上网找资料,并且初步完成了一个最基本的php扩展模块的框架。在此特别感谢花总的友情支持。 Continue reading

[教程]Linux下C语言对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]) Continue reading

在Windows下写PHP的C扩展

安装好如下软件:

1. VC++ 6
2. php二进制环境

3. Cygwin.

I. 下载php的源码包

下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_skel_win32.php.

ext_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。

II. 建立php扩展骨架目录文件

如果你的cygwin没有安装在c:\cygwin,进入php源码包\ext目录下,修改ext_skel_win32.php :

$cygwin_path = ‘c:\cygwin\bin’;

修改为你的cygwin目录

$cygwin_path = ‘d:\cygwin\bin’;

命令行方式进入ext目录然后运行:

php ext_skel_win32.php –extname=myhello Continue reading

Linux下 XCache 编译安装方法

大部分的人都说XCache的加速效果比eaccelerator好,这里说说编译安装,

这里选择的是稳定版本的1.2.2版本,2.0版本的不稳定。

wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz (下载)

tar -zxf xcache-1.2.2.tar.gz
cd xcache-1.2.2

/usr/local/php/bin/phpize
./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config
make
make install

记录下xcache的安装目录。 Continue reading

linux下用phpize给PHP动态添加扩展

相关教程:FreeBSD下安装php扩展

使用php的常见问题是编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,这里就需要用到phpize了。

如我想增加bcmath扩展的支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 –enable-bcmath 时可用”(引号内是手册中的话)

注意,有些扩展需要和php的版本保持一致才可以的.

解压bcmath包,进入里面的ext/bcmath目录,然后执行/usr/local/php/bin/phpize,phpize在php安装完以后会有这个命令的, 会发现当前目录下多了一些configure文件,然后再执行./configure命令即可.

#/usr/local/php/bin/phpize
#./configure –with-php-config=/usr/local/php/bin/php-config

注意要先确保/usr/local/php/bin/php-config存在。 (如果你的php安装路径不是默认的,请修改为php安装的路径)

如果没有报错,则make,再make install ,然后它告诉你一个目录.

#make
#make install

你把该目录下的bcmath.so拷贝到你php.ini中的extension_dir指向的目录中,

修改php.ini,在最后添加一句

extension=bcmath.so

重启WEB服务,再执行phpinfo(),惊喜发现:

互此bcmath扩展已经安装成功!

这里也有一篇安装php扩展的文章,”Linux下 安装XCache 扩展”,安装方法点击查看

linux静态链接库与动态链接库的区别及动态库的创建

一、引言
通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。

其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime)。这就是如雷贯耳的动态链接库(dynamic link library)技术。

二、动态链接库的特点与优势

首先让我们来看一下,把库函数推迟到程序运行时期载入的好处:

1. 可以实现进程之间的资源共享。

什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个C标准库的代码段。 Continue reading

Linux中创建静态库和动态库

函数库分为静态库和动态库两种。

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

程序1: hello.h

#ifndef HELLO_H

#define HELLO_H

void hello(const char *name);

#endif //HELLO_H

程序2: hello.c

#include

void hello(const char *name)

{

printf(“Hello %s!\n”, name);

}

Continue reading