這裏咱們使用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!