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