问:为什么是小扩展

答:因为我还没在生产环境上测试过~~囧~

环境ubuntu 16.04

go1.6.3 linux/amd64

php7.0.9

php-go安装

示例

示例模块php-go/example/hello.go中比较全的写出了大部分示例(虽然没多少注释~)# 编译示例模块hello.so

cd cd $GOPATH/src/github.com/kitech/php-go

make

ls -lh php-go/hello.so

tips: make时可能会出现make: /usr/bin/php-config:命令未找到,手动修改下Makefile的第10行PHPCFG={yourPath}

将php-go/hello.so拷贝到你php的extension目录下,添加php.ini,php -m |grep hello能看到hello扩展没报错就ok了,重启nginx就可以在php里测试了

编写自己的小Demogo// php-go/example/jw.go

package main

import (

"github.com/kitech/php-go/phpgo"

)

type Jw struct {

}

func NewJw() *Jw {

return &Jw{}

}

func (j *Jw) Test(m int, n int) int {

return m + n

}

func main() {

panic("wtf")

}

func Jw_hello() string {

return "Aaaa"

}

func init() {

phpgo.InitExtension("jw", "0.1")

phpgo.AddFunc("jw_hello", Jw_hello)

phpgo.AddClass("Jw", NewJw)

}编译先修改php-go/Makefile,添加编译模块all:

go build -v -buildmode=c-shared -o jw.so examples/jw.go

clean:

rm -f jw.so- 编译cd cd $GOPATH/src/github.com/kitech/php-go

make

ls -lh php-go/jw.so

sudo cp $GOPATH/src/github.com/kitech/php-go/jw.so $PHP_PATH/lib/php/extensions/no-debug-non-zts-20151012

echo "jw.so" >> $PHP_PATH/etc/php.ini

sudo service nginx restart- 写php测试模块

1.png

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐