# zephir-framework
**Repository Path**: lineco/zephir-framework
## Basic Information
- **Project Name**: zephir-framework
- **Description**: 使用 zephir 给 PHP7 写动态链接库
- **Primary Language**: PHP
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://github.com/Tinywan
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2018-01-30
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# zephir-framework
使用Zephir给PHP写扩展
## 项目结构
```bash
.
├── zephirlib -- 扩展库目录
│ ├── Auth
│ │ └── License.zep -- 权限认证
│ ├── Base
│ │ ├── AbstractModule.zep -- 模块抽象类
│ │ ├── Base.zep
│ │ └── Service.zep
│ ├── Db
│ │ └── Mysql.zep
│ └── Module -- 业务模块目录
│ ├── Category.zep
│ └── Edit.zep
├── config.json -- 编译扩展配置文件
└── ext -- 编译生成的.so文件
```
## 依赖
+ (重要)检查当前服务器的 `re2c` 版本,必须:`re2c >= 0.13.6`
+ [安装PHP7](http://www.cnblogs.com/tinywan/p/6607395.html)
+ [安装zephir](https://github.com/phalcon/zephir)
```bash
sudo apt-get install php7.1-dev gcc make re2c autoconf
git clone https://github.com/phalcon/zephir.git
cd zephir
sudo ./install -c
```
+ [安装php-zephir-parser](https://github.com/phalcon/php-zephir-parser)
```bash
git clone git://github.com/phalcon/php-zephir-parser.git
cd php-zephir-parser
// 最好指定配置文件位置,当然也可以直接做一个软连接
sudo ./install --phpize /usr/local/php-7.1.9/bin/phpize --php-config /usr/local/php-7.1.9/bin/php-config
```
+ 修改PHP.ini配置文件
```bash
$ sudo find / -name zephir_parser.so
/usr/local/php-7.1.9/lib/php/extensions/no-debug-non-zts-20160303/zephir_parser.so
vim /usr/local/php-7.1.9/etc/php.ini
//添加以下内容
[Zephir Parser]
extension=zephir_parser.so
//重启服务器
sudo service php-fpm restart
```
+ 配置检查
+ 
## 安装框架
+ 1、下载:
```bash
git clone https://github.com/Tinywan/zephir-framework.git
```
+ 2、编译:
```bash
cd zephir-framework/zephirlib
zephir build
Compiling...
Installing...
Extension installed!
Add extension=zephirlib.so to your php.ini
Don't forget to restart your web server
```
+ 3、添加扩展到`php.ini`:
+ PHP 7
+ 配置文件
```bash
vim /usr/local/php-7.1.9/etc/php.ini
# 添加内容
extension=/usr/lib/php/20160303/zephirlib.so
```
+ 重启服务器:`sudo service php7-fpm restart`
+ PHP 5
+ 配置文件
```bash
Installing shared extensions: /usr/lib/php5/20121212/
Cleaning..
cd /usr/lib/php5/20121212/
sudo vim /etc/php5/mods-available/zephirlib.ini
# 添加内容
extension=zephirlib.so
```
+ 切换到目录`/etc/php5/fpm/conf.d`做一个软连接
```bash
ln -s ../../mods-available/zephirlib.ini 20-zephirlib.ini
```
+ 重启服务器:`sudo service php5-fpm restart`
+ [PHP 文件加密 Zend Guard Loader](http://www.cnblogs.com/tinywan/p/6888061.html)
+ 4、重启`php-fpm`服务,查看扩展是否安装成功
+ 
+ `/etc/php5/fpm/conf.d/20-zephirlib.ini`
## 常见问题
+ 编译错误
```bash
root@iZ235mi4a64Z:~/zephir-framework/zephirlib# zephir build
────────────────────────────────────────────────────────────
The Zephir Parser extension is not loaded.
Note: Zephir no longer distributed with internal parser.
To install latest stable Zephir Parser please refer to:
https://github.com/phalcon/php-zephir-parser
────────────────────────────────────────────────────────────
```
+ 如何解决,查看命令行`(cli)`的配置文件,添加`zephir_parser`扩展
```bash
$ php --ini
Configuration File (php.ini) Path: /etc/php/7.1/cli
Loaded Configuration File: /etc/php/7.1/cli/php.ini
Scan for additional .ini files in: /etc/php/7.1/cli/conf.d
...
vim /etc/php/7.1/cli/php.ini
//添加以下内容
[Zephir Parser]
extension=/usr/local/php-7.1.9/lib/php/extensions/no-debug-non-zts-20160303/zephir_parser.so
$ php -m | grep Zephir
Zephir Parser
```
+ re2c 版本过低,导致`php-zephir-parser`安装失败
* 安装 re2c 执行:`sudo apt-get install re2c`
> `Ubuntu 14.04 LTS`系统默认安装
* 安装`php-zephir-parser`错误
```bash
sudo ./install
error: minimal required version of re2c is 0.13.6
```
* 查看当前版本
```bash
www@:~$ re2c --version
re2c 0.13.5
```
> 注:`Zephir`和`php-zephir-parser`要求:`re2c >= 0.13.6`
* 下载安装最新版本
```bash
wget https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz
tar zxvf re2c-0.16.tar.gz
cd re2c-0.16
./configure
make
make install
www@:~/tinywan/re2c-0.16$ re2c --version
re2c 0.16
```
> 注意:服务器系统内存不能小于:`512M`,否则没发编译。
## 创建和检查授权脚本
+ [创建 auth_key license_create.php](https://github.com/Tinywan/zephir-framework/blob/master/test/script/license_create.php)
+ [授权验证 license_check.php](https://github.com/Tinywan/zephir-framework/blob/master/test/script/license_check.php)
## 文档
+ [如何使用 zephir 编译一个扩展记录](http://www.cnblogs.com/tinywan/p/7753456.html)
+ [关于PHP7如何安装调试工具 Xdebug 扩展以及Zephir的问题](http://www.cnblogs.com/tinywan/p/7447958.html)