网站建设资讯

NEWS

网站建设资讯

第四十九天: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

[root@bogon 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出现这种情况

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

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

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

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

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

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

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

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

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

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

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

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:第四十九天:php-7.0编译模块的出错-创新互联
地址分享:http://cdweb.net/article/csjiee.html