本文共 1673 字,大约阅读时间需要 5 分钟。
BCH是基于BAE,BAE基础版、专业版虽然架构不同,但使用方法类似,所以下面的方法适合于这三个产品,下面统一说BAE。
先上参考文章:
http://godbae.duapp.com/?p=302(【BAE3.0使用系列】php runtime使用自定义添加的so扩展)
http://www.jb51.net/article/1628.htm(编写自己的php扩展函数)
http://blog.csdn.net/default7/article/details/32142381(Linux下已编译PHP增加扩展so的方法,关键phpize 和config.m4)
然后你要有BAE本地开发环境:https://bce.baidu.com/doc/BAE/GUIGettingStarted.html#.3F.4E.54.34.A7.1A.2E.89.9B.81.5B.50.25.48.B9.9D
其实我之前试了好多次,在BCC下自己编译安装的php 5.4.20环境,也按照上面第一篇文章里说的将phpize、php-config软连接到/usr/bin/下,可编译出来的.so文件放到BAE上总是不行。
BAE本地开发环境下编译的就可以,最后也没找到原因。。。
BAE下php的扩展很丰富,基本能满足大部分应用的需求,不过如果想用的php扩展没有安装或者需要安装自定义php扩展,也是有办法的。
BCH基于BAE,所以相同的方法也能安装php扩展,这个貌似是其他虚拟主机提供商没有的一个功能,大赞。。。
1、在BAE本地开发环境中编译好.so文件。
2、在BAE根目录(BCH下是webroot)创建文件夹“user_extention”,将.so文件和对应的.ini文件(内容写extension = xxx.so)放入。
3、重新发布(BCH下需要在站点启停里重载或重启站点)。
标题中说无需修改php.ini,其实也可以将extension = xxx.so写入php.ini上传到根目录(BCH是webroot)。
BAE是支持编辑php.ini的,在根目录下创建即可。BCH也支持,这貌似也是其他家不提供的功能。
下面实际演示,创建一个自定义的php扩展,例如hello.so,可以输出hello world。
下载php源码包,最好是5.4.xx的,BAE本地开放环境php版本是5.4.23。线上貌似是5.4.20。
解压进入ext目录,执行
#./ext_skel --extname=hello
然后ext目录下会多一个hello的文件夹
#vim hello/config.m4
10、11、12行前面的dnl去掉,或者去掉16、17、18行前的dnl。
#vim hello/hello.c
41行(const zend_function_entry hello_functions[] = {)下面加一行 PHP_FE(say_hello,NULL)
最后面添加如下代码
PHP_FUNCTION(say_hello){
zend_printf("hello world\n");
}
#vim hello/php_hello.h
45行(PHP_FUNCTION(confirm_hello_compiled);)上面加一行 PHP_FUNCTION(say_hello);
然后进入到hello目录
#phpize
#./configure
#make && sudo make install
然后就在/usr/lib/php5/20100525/下生成了hello.so
接下来按照上面方法把hello.so和hello.ini(内容是extension = hello.so)放到user_extention里就可以了。
然后两种办法测试:
一个是用phpinfo()函数,phpinfo页面查找hello。
一个是用我们刚刚自定义的函数say_hello(),输出hello world即表示成功。
转载地址:https://blog.csdn.net/weixin_32956805/article/details/116222291 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!