第四十九天:php-7.0编译模块的出错

小Q:雄关漫道真如铁,而今迈步从头越。从头越,苍山如海,残阳如血。             ——***

目前php最新版本7.0,因为需要,所以我尝试安装了一下,期间也遇到了好多问题,其中一些问题和老的版本差不多,我就不一 一细说了,有问题的朋友可以给我留言,一块探讨;

-------------------------------------------------------------------------------------------------

第一:安装完成之后找不到php-fpm.conf配置文件,其实好多关于fpm的配置文件都没有,只是我的水平不高,只能意识到php-fpm.conf;当时我没注意直接在解压的源码包里复制了一个大致类似的www.conf作为主配置文件,拷贝了一个启动文件,稍微配置了一下倒也是能启动成功,没什么大问题。

直到我在给php加扩展模块的时候出现了make编译时一直提示少目录文件报错的问题;

【我在想是不是/usr/local/php/bin/phpizen生成./configure时也会生成一些make时需要的目录文件,如果是这样那么我的错就出在php安装的过程,是不是因为编译php时漏掉了一些选项而导致phpize“生成”的不完全(其实我也感觉不是这的问题,不过不试试怎么知道呢),网上说也许是--enable-fpm的作用是开启php的fastcgi功能即开启php-fpm功能】

于是我又到了解压php的目录下,再次./configure --enable-fpm >> make >> make install;

完成之后意外的发现有了php-fpm.conf等文件,但是再次编译模块还是不成功,但也不是无功而返。

第二:(这是重点要说的)

一般下载php模块去PECL,里边的模块都是可用的,都没问题;

于是我下载好之后,开始编译,首先用phpizen生成configure文件,然后./confoigure先预编译一下,很成功没什么问题;

之后make

[[email protected] memcache-3.0.8]# make
/bin/sh /usr/local/src/memcache-3.0.8/libtool --mode=compile cc -I/usr/local/include/php -I. -I/usr/local/src/memcache-3.0.8 -DPHP_ATOM_INC -I/usr/local/src/memcache-3.0.8/include -I/usr/local/src/memcache-3.0.8/main -I/usr/local/src/memcache-3.0.8 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /usr/local/src/memcache-3.0.8/memcache.c -o memcache.lo 
mkdir .libs
 cc -I/usr/local/include/php -I. -I/usr/local/src/memcache-3.0.8 -DPHP_ATOM_INC -I/usr/local/src/memcache-3.0.8/include -I/usr/local/src/memcache-3.0.8/main -I/usr/local/src/memcache-3.0.8 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/memcache-3.0.8/memcache.c  -fPIC -DPIC -o .libs/memcache.o
In file included from /usr/local/src/memcache-3.0.8/php_memcache.h:34:0,
                 from /usr/local/src/memcache-3.0.8/memcache.c:30:
/usr/local/src/memcache-3.0.8/memcache_pool.h:45:47: 致命错误:ext/standard/php_smart_str_public.h:没有那个文件或目录
 #include "ext/standard/php_smart_str_public.h"
                                               ^
编译中断。
make: *** [memcache.lo] 错误 1

出现这种错误,缺少这个文件,刚开始没多想,去网上找了一个这个文件的模板,添加了进来,

之后再make出现这种情况

这就游戏有些棘手了,因为不可能一个文件一个文件去改配置啊,所以错误不是在这;

在此之前我用低版本的L N M P编译过memcache,一样的源码包,很正常,于是我又开了一个低版本的php测试,其他的配置都同高版本一样(只有系统版本和php版本不一样),memcache包也用的相同的;每一把都很正常的就ok了;

于是版本出的问题占百分之八十了。

我用make出的错误,去比较两个模块内的文件

左边是正常版本,右边是最新版本php的文件列表,很清楚地知道make调用的php_smart_str_public.h跟老版本中的文件对应,而新版本中也有这个文件,只不过名字变了,所以找不到;

当我把新版的文件改成对应的名字之后,文件便存在了,只不过他又会去报各种配置参数的错(如上),所以在此我就确定是因为php版本太高,已经和PECL内的模块编译对应的文件和参数不再匹配,而导致了这一系列的错误。

不过幸好的是,php7.0本身就自带Zend模块,只需在配置文件php.ini中打开选项即可

问题就到这了。。。。。。。。。。

时间: 2024-10-24 06:56:16

第四十九天:php-7.0编译模块的出错的相关文章

php-7.0编译模块的出错

小Q:雄关漫道真如铁,而今迈步从头越.从头越,苍山如海,残阳如血.             --*** 目前php最新版本7.0,因为需要,所以我尝试安装了一下,期间也遇到了好多问题,其中一些问题和老的版本差不多,我就不一 一细说了,有问题的朋友可以给我留言,一块探讨: ------------------------------------------------------------------------------------------------- 第一:安装完成之后找不到php-

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet 一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</s

python第四十九天--paramiko模块安装大作战

准备开始学习:paramiko模块,发现这个模块十分难搞 安装不上 搞了半天,win10 64下 pytyon 3.6 的 paramiko模块 死活安不上,在网上不断的找资料,可是没有用,没有用啊 无法,用虚拟机搞个centos7,安装,失败,再安装,再失败,上网找资料,终搞定,分享一下经验,免得大家再踩坑. 环境 centos 7 ,自带python 2.7,不用管它 安装新python3 第一步:下载python3.5安装包: wget --no-check-certificate htt

走入计算机的第四十九天(JavaScript语言二)

一 Date对象 1 创建Date对象 方法1 : 不指定参数 var nowd1=new Date(); alert (nowd1.toLocaleString( )); 方法2:参数为日期字符串 var nowd2=new Date("2004/3/20 11:12"); alert(nowd2.toLocaleString( )); var nowd3=new Date("04/03/20 11:12"); alert(nowd3.toLocaleString

shell学习四十九天----进程建立

进程 前言:进程指的是运行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后运行,知道他们下达exit()系统调用为止. linux系统都支持多进程.尽管计算机看起来像是一次做了非常多事,但除非是他拥有多个CPU,否则一次做了好多事仅仅是个错觉.其实,每一个进程仅容许在一个极短的期间运行,我们称为时间片段,之后进程会先临时搁置,让其它等待中进程运行.时间片段极短,通常仅仅有几微妙,所以人们非常少感觉到进程将控制权交回内核,再交给还有一个进程的这样的文本切换.进程本身不

武汉第四十九天

时间真的都被狗吃了? 今天下午和两个同事吃饭聊天,他们都比我小一两岁,可是,经历却好像要比我丰富很多,他们谈及的许多话题我都插不上话,想在嘻嘻想来,大量的时间也许被做了无意义的事情,本质上是虚度了,算不上经历,就像学历一样,很多情况下不是属实的,四年的大学本科,正真能所做经历的,我想也不是很多,现在面临就业,还常常被一些方向所困惑,每个人都期待那一份好的工作,在我之前的印象中,好像,总会有一些人,可以靠运气找到好的工作,所以,也默认自己会靠运气找一份好的工作,还总盯着大家都盯着的好的职位,完全忘

C#高级编程四十九天----队列

队列 1.Queue定义 System.Collections.Queue类表示对象的先进先出集合,存储在Queue(队列)中的对象在一端插入,从还有一端移除. 2.长处 (1).能对集合进行顺序处理(先进先出) (2)能接受null值,而且同意反复的元素 3.Queue的构造器 构造器函数 凝视 Queue() 初始化Queue类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0) Queue(ICollection) 初始化Queue类的新实例,该实例包括从指定集合复制

第四十九天:mysql-5.7不能登录的问题

小Q:雄关漫道真如铁,而今迈步从头越.                                 --<忆秦娥·娄山关> 好久没有记录了,本来前一阵总结了好多问题,但是因为刚刚步入职场,许多事都要积极,而且我没有电脑,所以一拖再拖,然而拖得不太好总结了:今天遇到个新问题,很有针对性,所以抽空记录一下. ----------------------------------------------------------------------------------------------

爱创课堂每日一题第四十九天- 什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?

1.如何获取rpm包,及制作kubernetes镜像 1.1 官方yum源,有翻墙能力的 请使用 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.c