解决编译php memcached扩展的问题:php_libmemcached_compat.h:5:40
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-21 10:51:46 浏览: 评论:0
本文章为各位介绍解决编译php memcached扩展的问题:php_libmemcached_compat.h:5:40:错误:libmemcached-1.0/memcached.h:没有那个文件或目录,希望文章对各位有帮助.
服务器是Centos6 64,PHP5.4.23,需要安装php memcached扩展,尝试使用pecl安装:
- # yum install libmemcached libmemcached-devel zlib-devel
- # yum -y install php-pear
- # pecl install memcached
但出现错误:在包含自 /var/tmp/memcached/php_memcached.h:22 的文件中,从 /var/tmp/memcached/php_memcached.c:47:
/var/tmp/memcached/php_libmemcached_compat.h:5:40:错误:libmemcached-1.0/memcached.h:没有那个文件或目录.
上面明显php_libmemcached_compat.h文件中找不到memcached.h,于是下载文件包,一看究竟:
- # wget http://pecl.php.net/get/memcached
- # mv memcached memcached.tar.gz
- # tar zxf memcached.tar.gz
- # cd memcached-2.2.0b1/
- # vi php_libmemcached_compat.h
- #ifndef PHP_LIBMEMCACHED_COMPAT
- #define PHP_LIBMEMCACHED_COMPAT
- /* this is the version(s) we support */
- #include <libmemcached/memcached.h>
看到上面包含libmemcached/memcached.h,但事实上memcached.h文件位于:
- # find /usr -name memcached.h
- /usr/include/libmemcached/memcached.h
那么修改上面的路径为正常路径:
- #ifndef PHP_LIBMEMCACHED_COMPAT
- #define PHP_LIBMEMCACHED_COMPAT
- --phpfensi.com
- /* this is the version(s) we support */
- #include </usr/include/libmemcached/memcached.h>
保存后,使用phpize来编译:
configure: error: no, sasl.h is not available. Run configure with --disable-memcached-sasl to disable this check cyrus-sasl-devel
只好加上 --disable-memcached-sasl,重新进行,但依然出现错误:
- # ./configure --disable-memcached-sasl
- ...省略...
- In file included from /root/download/memcached-2.2.0b1/php_memcached_private.h:28,
- from /root/download/memcached-2.2.0b1/php_memcached.c:26:
- /root/download/memcached-2.2.0b1/php_libmemcached_compat.h:53: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘php_memcached_instance_st’
- ...省略...
看来此路不通,只有手动编译libmemcached来尝试了,下面是手动编译libmemcached和php memcached扩展.
1.先卸载yum安装的libmemcached
# yum remove libmemcached libmemcached-devel
2.下载源码包
- # cd ..
- # wget https://launchpad.net/libmemcached/1.0/1.0.17/+download/libmemcached-1.0.17.tar.gz
- # tar zxf libmemcached-1.0.17.tar.gz
- # cd libmemcached-1.0.17
- # ./configure
- # make
- # make install
成功安装libmemcached.
3.接下来安装memcached,先查找memcached.h头文件在哪里,需要在php_libmemcached_compat.h设置正确的include路径.
- # cd ../memcached-2.2.0b1
- # find / -name memcached.h
- /root/download/libmemcached-1.0.17/libmemcached/memcached.h
- /root/download/libmemcached-1.0.17/libmemcached-1.0/struct/memcached.h
- /root/download/libmemcached-1.0.17/libmemcached-1.0/memcached.h
- /root/download/libmemcached-1.0.17/libtest/memcached.h
- /root/download/mysql-5.6.15/plugin/innodb_memcached/daemon_memcached/daemon/memcached.h
- /usr/local/include/libmemcached/memcached.h
- /usr/local/include/libmemcached-1.0/struct/memcached.h
- /usr/local/include/libmemcached-1.0/memcached.h
4.修改memcached-2.2.0b1下的php_libmemcached_compat.h文件中include路径为正确路径:
- #ifndef PHP_LIBMEMCACHED_COMPAT
- #define PHP_LIBMEMCACHED_COMPAT
- /* this is the version(s) we support */
- #include </usr/local/include/libmemcached/memcached.h>
5.开始编译安装php memcached扩展:
- # phpize
- # ./configure
- # make
- ...省略...
- Build complete.
- Don't forget to run 'make test'.
- # make install
- Installing shared extensions: /usr/lib64/php/modules/
6. 查看是否已生成了memcached.so:
- # ls /usr/lib64/php/modules/
- bcmath.so gd.so memcached.so mysql.so phar.so sysvsem.so xcache.so xsl.so
- curl.so json.so memcache.so pdo_mysql.so posix.so sysvshm.so xmlreader.so zip.so
- dom.so mbstring.so mysqli.so pdo.so sqlite3.so tidy.so xmlrpc.so
- fileinfo.so mcrypt.so mysqlnd_memcache.so pdo_sqlite.so sysvmsg.so wddx.so xmlwriter.so
Tags: memcached php_libmemcached_compat
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)