Below you will find pages that utilize the taxonomy term “Php扩展”
December 17, 2010
freeBSD 安装php扩展:iconv
"\u003cp\u003e对于Linux下安装php扩展的教程,请参考这里:\u003c/p\u003e\n\u003cp\u003eFreeBSD上默认安装php的时候不会带iconv扩展,因此不会有iconv这个函数。\n利用port方式安装(如果系统上没有port树,参考 \u003ca href=\"http://blog.haohtml.com/index.php/archives/830\"\u003efreeBSD 利用portsnap更新port\u003c/a\u003e,利用portsnap获取一份最新的port树),过程如下:\n\u003cstrong\u003e获取php5源文件包\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e****#cd /usr/ports/lang/php5\n#make fetch\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e默认情况下,源码包会下载到/usr/ports/distfiles/目录下\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e安装iconv\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e****#cd ../../distfiles/\n#tar -xjvf php-5.2.11.tar.bz2\n#cd php-5.2.11/ext/iconv\n#phpize\n#./configure\n#make\n#make install\nInstalling shared extensions: /usr/local/lib/php/20060613/\nInstalling header files: /usr/local/include/php/\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e将扩展模块 …\u003c/strong\u003e\u003c/p\u003e"
October 25, 2010
Windows 下为PHP添加扩展模块初探
"\u003cp\u003e说明:\u003c/p\u003e\n\u003cp\u003e本人新手,虽然用过很长时间的php,也写过一些简单php程序,但是一直没有对php的扩展模块有过研究。最近因为开发需要,要给一些php应用扩展功能,虽然手边有以前开发好的C程序,用popen等运行之也可以使用,但是从效率、调用便捷性、代码完整性等方面考虑总是觉得popen方式有些不妥,因此萌生了写个扩展模块的念头。于是乎上网找资料,并且初步完成了一个最基本的php扩展模块的框架。在此特别感谢花总的友情支持。\u003c/p\u003e\n\u003cp\u003ebtw: 本文所说的相关技术已经很陈旧了,实在不适合用“初探”这个词,但是于我个人而言,却又的确是初探,现总结出来,分享之。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e0、环境说明\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e框架生成环境:\u003c/p\u003e\n\u003cp\u003eFreeBSD 6.0-STABLE ( 用各版本 Linux 或者 cygwin 也可以,不过我手边只有 bsd,就用它了 )\u003c/p\u003e\n\u003cp\u003ePHP-4.4.4 源码包 (php-4.4.4.tar.bz2 或 php-4.4.4.tar.gz)\u003c/p\u003e\n\u003cp\u003e开发工具:\u003c/p\u003e\n\u003cp\u003eVC++ 6.0 ( 我没有用 VS .Net,因为 VC++6.0 启动比较快些,而且只是写个DLL而已 )\u003c/p\u003e\n\u003cp\u003e运行环境:\u003c/p\u003e\n\u003cp\u003eWindows 2003\u003c/p\u003e\n\u003cp\u003ePHP-4.4.4 …\u003c/p\u003e"
October 25, 2010
[教程]Linux下C语言对PHP扩展
"\u003cp\u003e\u003cstrong\u003e一,搭建php环境\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e下载php 5.2.6 源码 并解压编译安装,搭建php环境\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二,创建扩展项目\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e进入源码目录\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd php5.2.6/ext/\u003c/p\u003e\n\u003cp\u003e./ext_skel –extname=my_ext\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e创建名字为my_ext的项目,最终会生成 my_ext.so\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e三,更改配置和程序\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ vi ext/my_ext/config.m4\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e根据你自己的选择将\u003c/p\u003e\n\u003cp\u003ednl PHP_ARG_WITH(my_ext, for my_ext support,\u003c/p\u003e\n\u003cp\u003ednl Make sure that the comment is aligned:\u003c/p\u003e\n\u003cp\u003ednl [ –with-my_ext Include my_ext support])\u003c/p\u003e\n\u003cp\u003e修改成\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePHP_ARG_WITH(my_ext, for my_ext support,\u003c/p\u003e\n\u003cp\u003eMake sure that the comment is aligned:\u003c/p\u003e\n\u003cp\u003e[ –with-my_ext Include my_ext support])\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e或者将\u003c/p\u003e\n\u003cp\u003ednl PHP_ARG_ENABLE(my_ext, whether to enable my_ext …\u003c/p\u003e"
October 25, 2010
在Windows下写PHP的C扩展
"\u003cp\u003e安装好如下软件:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eVC++ 6\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ephp二进制环境\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCygwin.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eI. 下载php的源码包\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_skel_win32.php.\u003c/p\u003e\n\u003cp\u003eext_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eII. 建立php扩展骨架目录文件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e如果你的cygwin没有安装在c:\\cygwin,进入php源码包\\ext目录下,修改ext_skel_win32.php :\u003c/p\u003e\n\u003cp\u003e$cygwin_path = ‘c:\\cygwin\\bin’;\u003c/p\u003e\n\u003cp\u003e修改为你的cygwin目录\u003c/p\u003e\n\u003cp\u003e$cygwin_path = ‘d:\\cygwin\\bin’;\u003c/p\u003e\n\u003cp\u003e命令行方式进入ext目录然后运行:\u003c/p\u003e\n\u003cp\u003ephp ext_skel_win32.php –extname=myhello\u003c/p\u003e\n\u003cp\u003e(当然,为了保证上面的命令行能正常运行,首先你得确保你的php目录在系统的环境变量里)\u003c/p\u003e\n\u003cp\u003e运行该命令后,有人发现下面的错误\u003c/p\u003e\n\u003cp\u003eWarning: …\u003c/p\u003e"
October 15, 2010
Linux下 XCache 编译安装方法
"\u003cp\u003e大部分的人都说XCache的加速效果比eaccelerator好,这里说说编译安装,\u003c/p\u003e\n\u003cp\u003e这里选择的是稳定版本的1.2.2版本,2.0版本的不稳定。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ewget \u003ca href=\"http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz\"\u003ehttp://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz\u003c/a\u003e (下载)\u003c/p\u003e\n\u003cp\u003etar -zxf xcache-1.2.2.tar.gz\ncd xcache-1.2.2\u003c/p\u003e\n\u003cp\u003e/usr/local/php/bin/phpize\n./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config\nmake\nmake install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e记录下xcache的安装目录。\u003c/p\u003e\n\u003cp\u003e编辑php.ini文件,加入Xcache,作为Zend扩展。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[xcache-common]\n;; install as zend extension (recommended), normally “$extension_dir/xcache.so”\nzend_extension = /路径/xcache.so\n;; or …\u003c/p\u003e\u003c/blockquote\u003e"
October 15, 2010
linux下用phpize给PHP动态添加扩展
"\u003cp\u003e相关教程: \u003ca href=\"http://blog.haohtml.com/index.php/archives/7001\"\u003eFreeBSD下安装php扩展\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e使用php的常见问题是编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,这里就需要用到phpize了。\u003c/p\u003e\n\u003cp\u003e如我想增加bcmath扩展的支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 –enable-bcmath 时可用”(引号内是手册中的话)\u003c/p\u003e\n\u003cp\u003e注意,有些扩展需要和php的版本保持一致才可以的.\u003c/p\u003e\n\u003cp\u003e解压bcmath包,进入里面的ext/bcmath目录,然后执行/usr/local/php/bin/phpize,phpize在php安装完以后会有这个命令的, 会发现当前目录下多了一些configure文件,然后再执行./configure命令即可.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#/usr/local/php/bin/phpize\n#./configure –with-php-config=/usr/local/php/bin/php-config\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意要先确保**/usr/local/php/bin/php-config**存在。 (如果你的php安装 …\u003c/p\u003e"
October 15, 2010
linux静态链接库与动态链接库的区别及动态库的创建
"\u003cp\u003e\u003cstrong\u003e一、引言\u003c/strong\u003e\n通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。\u003c/p\u003e\n\u003cp\u003e其实,我们也可以把对一些库函数的链接载入推迟到程序运行的时期(runtime)。这就是如雷贯耳的动态链接库(dynamic link library)技术。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、动态链接库的特点与优势\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e首先让我们来看一下,把库函数推迟到程序运行时期载入的好处:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e可以实现进程之间的资源共享。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序 …\u003c/p\u003e"
October 15, 2010
Linux中创建静态库和动态库
"\u003cp\u003e\u003cstrong\u003e函数库分为静态库和动态库两种。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。\u003c/p\u003e\n\u003cp\u003e动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。\u003c/p\u003e\n\u003cp\u003e程序1: hello.h\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#ifndef HELLO_H\u003c/p\u003e\n\u003cp\u003e#define HELLO_H\u003c/p\u003e\n\u003cp\u003evoid hello(const char *name);\u003c/p\u003e\n\u003cp\u003e#endif //HELLO_H\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e程序2: hello.c\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#include\u003c/p\u003e\n\u003cp\u003evoid hello(const char *name)\u003c/p\u003e\n\u003cp\u003e{\u003c/p\u003e\n\u003cp\u003eprintf(“Hello %s!\\n”, name);\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e程序3: main.c\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#include “hello.h”\u003c/p\u003e\n\u003cp\u003eint main()\u003c/p\u003e\n\u003cp\u003e{\u003c/p\u003e\n\u003cp\u003ehello(“everyone”);\u003c/p\u003e\n\u003cp\u003ereturn 0;\u003c/p\u003e\n\u003cp\u003e}\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# gcc -c hello.c\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e1:创建静态库\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。 …\u003c/p\u003e"