PHP7 学习笔记(七)如何使用zephir编译一个扩展记录

简介: 一、zephir 编译遇到的错误安装git clone https://github.com/phalcon/zephir$ cd zephir$ ./install-json$ ./install -c编译www@ubuntu4:~$ zephir build────...

 一、zephir 编译遇到的错误

安装

git clone https://github.com/phalcon/zephir
$ cd zephir
$ ./install-json
$ ./install -c

编译

www@ubuntu4:~$ 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
────────────────────────────────────────────────────────────

二、php-zephir-parser 安装

git clone git://github.com/phalcon/php-zephir-parser.git

php7.0-dev 安装报错

www@ubuntu4:~$ sudo apt-get install php7.0-dev gcc make re2c autoconf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package php7.0-dev
E: Couldn't find any package by regex 'php7.0-dev'

如何让解决

1、php7的存储库的问题,添加php7 ppa

sudo add-apt-repository ppa:ondrej/php

2、更新库

sudo apt-get update

3、现在做一个搜索来确认php7是有的

sudo apt search php7

重新安装,则不会报错

www@ubuntu4:~$ sudo apt-get install php7.0-dev gcc make re2c autoconf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version.
gcc set to manually installed.
make is already the newest version.
re2c is already the newest version.
The following extra packages will be installed:
  automake autotools-dev debhelper dh-apparmor dh-php gettext intltool-debian
  libasprintf-dev libgettextpo-dev libgettextpo0 liblist-moreutils-perl
  libltdl-dev libmail-sendmail-perl libssl1.1 libsys-hostname-long-perl
  libtool libunistring0 m4 php-common php-pear php-xml php7.0-cli
  php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.1-common
  php7.1-xml pkg-php-tools po-debconf shtool xml2

开始编译

www@ubuntu4:~/ffmpeg_videos/php-zephir-parser$ sudo ./install
Generating parser...
Parser statistics: 132 terminals, 99 nonterminals, 470 rules
                   982 states, 0 parser table entries, 0 conflicts
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012
libtool: compile:  gcc -I. -I/home/www/ffmpeg_videos/php-zephir-parser -DPHP_ATOM_INC -I/home/www/ffmpeg_videos/php-zephir-parser/include
-I/home/www/ffmpeg_videos/php-zephir-parser/main -I/home/www/ffmpeg_videos/php-zephir-parser -I/usr/include/php/20151012

-I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext

-I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -march=native -mtune=native -O2 -fomit-frame-pointer -fvisibility=hidden -flto
-c /home/www/ffmpeg_videos/php-zephir-parser/zephir_parser.c -fPIC -DPIC -o .libs/zephir_parser.o

或者指定编译配置文件

$./install --phpize /usr/local/php-7.1.11/bin/phpize --php-config /usr/local/php-7.1.11/bin/php-config

....

  

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/local/php-7.1.11/lib/php/extensions/no-debug-non-zts-20160303/
Cleaning..

Thanks for compiling Zephir Parser!
Build succeed: Please restart your web server to complete the installation

编译完成

查找.so 文件路径

www@ubuntu4:~ sudo find / -name zephir_parser.so
/usr/lib/php/20151012/zephir_parser.so

配置php.ini 文件

sudo vim /opt/php-7.1.9/etc/php.ini

添加一下内容:

[Zephir Parser]
extension=/usr/lib/php/20151012/zephir_parser.so

安装完毕

三、重新编译,出现同样的错误:

www@ubuntu4:~/ffmpeg_videos/zephir-framework/lib$ 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
────────────────────────────────────────────────────────────

好纠结啊,如何解决:

直接系统自动默认安装的

rm /usr/bin/php

做个软连接

sudo ln -s /opt/php-7.0.9/bin/php /usr/bin/php

继续,Ok 了:

www@ubuntu4:~/ffmpeg_videos/zephir-framework/zephirlib$ zephir build
Compiling...
Installing...
Extension installed!
Add extension=zephirlib.so to your php.ini

 

编译PHP7 如何使用 Cli 命令而不是软连接

 

  • root用户,sudo vim /etc/profile

  • 添加PHP7编译的路径:export PATH=$PATH:/usr/local/php-7.1.8/bin,执行source profile使生效

 

目录
相关文章
|
2月前
|
存储 Java 数据库连接
php学习笔记-代码基本语法-day01
本文是关于PHP编程语言的基础语法学习笔记,内容包括PHP的介绍、注释风格、数据类型、命名规范、常量和变量的使用,以及变量和常量相关的常用函数。文中详细解释了PHP的基本语法元素和一些易混淆的概念,如传值赋值与传址赋值、可变变量,以及如何检查变量是否已定义或为空。
php学习笔记-代码基本语法-day01
|
2月前
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
27天前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
12 0
MongoDB PHP 扩展
|
2月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
2月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
2月前
|
JavaScript Java PHP
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
本文是第二天的PHP学习笔记,涵盖了PHP中运算符的使用、类型转换方式,以及打印输出语句的特点,展示了其相较于其他编程语言的一些特殊之处。
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
|
2月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
2月前
|
JavaScript 程序员 PHP
php学习笔记-php自定义函数-day05
本文介绍了PHP自定义函数的创建、调用、参数赋值以及作用域和生命周期,还探讨了`global`和`static`关键字的使用,以及`return`、`exit`和`die`的不同用法。
|
2月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。