这里咱们使用Docker来安装咱们的开发环境,docker的安装参考官方文档 https://docs.docker.com/install/
首先就是根据咱们目标PHP版本拉取对应的Zephir编译器镜像,这里咱们PHP版本是7.0,因而使用这条命令:php
docker pull phalconphp/zephir:7.0
而后建立/usr/local/bin/zephir
文件,文件内容以下:html
#!/usr/bin/env bash docker_bin="$(which docker 2> /dev/null)" # 5.4, 5.5, 5.6, 7, 7.0, latest PHP_VERSION=7.0 ${docker_bin} run -it --rm \ --privileged=true \ -e ZEND_DONT_UNLOAD_MODULES=1 \ -v $(pwd):/zephir \ phalconphp/zephir:${PHP_VERSION} "$@" ret=$? if [ ${ret} -ne 0 ]; then errors="$(pwd)/compile-errors.log" if [ -e ${errors} ]; then cat ${errors} fi fi
对这个文件加上可执行权限:docker
sudo chmod a+x /usr/local/bin/zephir
这样咱们就装好了Zephir编译器:json
$zephir version 0.9.7
这里咱们建立的项目名叫作utils
,使用Zephir脚手架初始化项目代码:bash
zephir init utils
编写一个zep文件:测试
$ cat utils/utils/greeting.zep namespace Utils; class Greeting { public static function say() { echo "hello world!\n"; } }
$cd utils $ls config.json ext utils $zephir build
这样咱们就获得了咱们编译的so库文件:ext/modules/utils.so
ui
经过php -i | grep extension_dir
获得咱们PHP拓展so文件的安装目录是:/usr/lib/php/20151012/
下面,因而2条命令完成cli模式PHP的拓展安装,fpm模式也相似,(经过php -i | grep 'Scan this dir for additional .ini files'
获取ini配置文件目录):this
sudo \cp ext/modules/utils.so /usr/lib/php/20151012/ echo "extension=utils.so" | sudo tee /etc/php/7.0/cli/conf.d/30-zephir-dev.ini
最后咱们,写个PHP文件来测试下这个so库是否安装成功:spa
$cat > test.php <<_EOF <?php $obj = new Utils\Greeting(); var_dump($obj); Utils\Greeting::say(); _EOF $php test.php
获得结果:code
object(Utils\Greeting)#1 (0) { } hello world!