php编译安装问题
php编译安装问题编译嗣后的./configure参数路径可以根据phpinfo()里显示的为参照。
1。出现找不到apxs的问题:
应该是apxs没装,上网查apxs是apache的一个扩展工具。httpd不是默认或者是用yum安装的还需要安装httpd-devel
#yum install httpd-devel
把apxs装上
重新编译php
./configure --prefix=/usr/local/php5 --with-config-file-path=/etc --with-apxs2=/usr/sbin/apxs --with-mysql=/usr/lib/mysql
#make
2。出现“xml2-config not found.please check your libxml2”错误,原因是没有libxml2 ,使用 yum install libxml2 即可
#yum -y install libxml2-devel
重新编译
3。出现“configure: error: Cannot find libmysqlclient_r under /usr/lib/mysql.
Note that the MySQL client library is not bundled anymore!“可能是mysql的库不完全,**mysql-devel和mysql-server是否安装了,果然没有安装立刻安装
#yum install mysql-develor#yum install mysql-server
#make
#make install
4。安装完成后如果提示:You may want to add: /usr/local/php5/lib/php to your php.ini include_path
找php.ini文件看看,文件里面有没有类似“include_path“的段然后把"/usr/local/php5/lib/php"加进去
#vi /etc/php.ini
include_path = "/usr/local/php5/lib/php"
5。最后一步重新启动httpd报如下错误:
"httpd: Syntax error on line 206 of /etc/httpd/conf/httpd.conf: Cannot load /usr/lib/httpd/modules/libphp5.so into server: /usr/lib/httpd/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied"
原因:是Linux有一个SELinux保护模式引起的。解决办法:
1关闭SELINUX的方法:
vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启
这个方法可能会对服务器带来风险。
2不关闭SELINUX的方法:# setenforce 0
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/lib/httpd/modules/libphp5.so
# service httpd restart
# setenforce 1
6。启动httpd出新"module php5_module is already loaded, skipping" 重新编译php安装后,在httpd.conf文件里又加了
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so 这一行。将这行注释掉重启动OK!
完成! 编译安装PHP的时候出现错误:
configure: error: Cannot find ldap.h
原因:
依赖于openldap包,没安装此类相关软件包造成。
问题解决方法:
yum install openldap.i386 openldap-clients.i386 openldap-devel.i386 openldap-servers.i386
然后继续:./configure --prefix=/usr/local/.........................
错误不在出现
OK,编译通过。 ld: cannot find -lltdl解决方法<BR><BR><BR>
<P>php在make过程中出现“ld: cannot find -lltdl”错误,详细错误如下:</P>
<BLOCKQUOTE>
<P>/usr/bin/ld: cannot find -lltdl<BR>collect2: ld returned 1 exit status<BR>make: *** Error 1</P></BLOCKQUOTE>
<P>原因是在编辑php时添加的“–with-mcrypt”选项造成。所以“usr bin ld cannot find lltdl”错误解决办法如下:</P>
<P>1、如果不需要mcrypt,那么编辑php时去掉该选项,然后再make、make install。</P>
<P>2、如果需要mcrypt,那么需要安装libltdl</P>
<P>libltdl在libmcrypt软件包中就有,具体过程:</P>
<BLOCKQUOTE>
<P>#cd /software/libmcrypt-2.5.8/libltdl</P>
<P>#./configure –enable-ltdl-install</P>
<P>#make</P>
<P>#make install</P></BLOCKQUOTE>
<P>这个时候再回到php的安装目录下进行php的安装,应该就没有什么问题了:)</P> <P>/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value问题</P>
<P>编译错误如下:</P>
<P>....../usr/bin/ld: /usr/local/openssl/lib/libssl.a(s2_srvr.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC<BR>/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value<BR>collect2: ld returned 1 exit status<BR>make: *** 错误 1</P>
<P> </P>
<P>解决办法:</P>
<P> </P>openssl编译参数
<P>./config -fPIC --prefix=/usr/local/openssl/ enable-shared</P>
<P> </P>
<P>PHP编译参数</P>
<P>CFLAGS="-m64 -O3" CXXFLAGS="-m64 -O3" ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mbstring=all --with-mcrypt --disable-cgi --enable-libgcc --enable-zend-multibyte --with-openssl</P>
<P> </P>
<P> </P> 解决/usr/bin/ld: cannot find -lmysqlclient错误
类似/usr/bin/ld: cannot find -xxxx的错误有很多, 首先我们可以最简单的判断一下:
这类情况一般是由于缺乏某某库文件, 又或者可能是由于已存在的库问题版本不对造成的
一般都是解决的办法就是安装缺乏的devel包就可以解决, 当然还有其他的未知因素, 我们看一个实例:
我在一台装centos5.2 x86_64的系统上配置php环境, 提示这个错误
"/usr/bin/ld: cannot find -lmysqlclient"
于是我安装了
# yum -y install mysql-devel
结果提示依旧, 我根据提示查看config.log
/usr/bin/ld: skipping incompatible /usr/local/mysql/lib/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/local/mysql/lib/libmysqlclient.a when searching for -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
她还是去找/usr/local/mysql/lib/libmysqlclient.so, 我来把这个错的换成对了, 刚才装了mysql-devel, 那么在/usr/lib64下就多了一个mysql的目录
# cd /usr/local/mysql
# mv lib lib.bak
# ln -s /usr/lib64/mysql /usr/local/mysql/lib (给他做个软链接)
然后再次编译安装php, 一切正常! undefined reference to `libiconv_open 无法编译PHP
make时提示:
.....................................................
ext/iconv/.libs/iconv.o(.text+0x1738): In function `zif_iconv_mime_encode':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1017: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x1756):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1031: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x1993):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1290: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x19ad):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1293: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x1b01):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1102: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1b33):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1134: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1b5e):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1150: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1e10):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1202: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1e3c):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1233: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x207f):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1277: more undefined references to `libiconv' follow
ext/iconv/.libs/iconv.o(.text+0x2c08): In function `php_iconv_stream_filter_dtor':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2393: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x2cf2): In function `php_iconv_stream_filter_append_bucket':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2543: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x2d34):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2543: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x2de7):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2465: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x30e2): In function `php_iconv_stream_filter_factory_create':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2419: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** Error 1
解决方法:
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#tar -zxvf libiconv-1.13.1.tar.gz
#cd libiconv-1.13.1
# ./configure --prefix=/usr/local/libiconv
# make
# make install
再检查php
#./configure --with-mysql=/backup/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-curl --with-gd --enable-gd-native-ttf --with-apxs2=/usr/local/apache/bin/apxs --enable-sockets --with-iconv=/usr/local/libiconv
#make
#make install
另一种解决方法为去除iconv模块也能正常编译php,如下:
編輯 Makefile 大約 77 行左右的地方:
EXTRA_LIBS = ..... -lcrypt
在最後加上 -liconv,例如:
EXTRA_LIBS = ..... -lcrypt -liconv
再运行make就可以了。
最后一种方法:由tonyty163提供:#make ZEND_EXTRA_LIBS='-liconv'
#make install 解决configure: error: Please reinstall the libcurl
今天配置一台server的php支持curl的时候, 出现如下报错
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
其实就是curl的dev包没有安装, 解决方案:
终端下
# yum -y install curl-devel
然后就可以继续了 解决 “XX.lo is not a valid libtool object”
1、先介绍一下libtool是个什么东东;
libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la为的libtool文件打交道。(lo是目标文件,la是库文件)
libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;将繁重的库依赖关系的维护工作承担下来,从而释放了程序员的人力资源。libtool提供统一的接口,隐藏了不同平台间库的名称的差异等细节,0生成一个抽象的后缀名为la高层库libxx.la(其实是个文本文件),并将该库对其它库的依赖关系,都写在该la的文件中。该文件中的dependency_libs记录该库依赖的所有库(其中有些是以.la文件的形式加入的);libdir则指出了库的安装位置;library_names记录了共享库的名字;old_library记录了静态库的名字。
from:http://hi.baidu.com/lieyu063/blog/item/9c99a2dd23e41f365882dd39.html
2、在linux中执行一下命令
tar xzvf db-4.5.20.tar.gz
cd /db-4.5.20/dist
./configure --prefix=/usr/local/db-4.5.20
make & make install
在执行最后一个命令“make & make install”来安装db-4.5.20时出现“XX.lo is not a valid libtool object” 这个错误。
上面--prefix=/usr/local/db-4.5.20表示下面在执行make install的时候会将db-4.5.20安装到/usr/local/db-4.5.20这个目录下
3、解决办法
执行一下命令来解决
make realclean
./db-4.5.20/dist/configure
make install
哦耶!!最终安装成功!!
make realclean 的功能是清除所有的上次编译残留信息
from:http://www.linuxsir.org/bbs/showthread.php?t=227716
解决 “configure: error: libjpeg.(a|so) not found"
在安装php的过程中.执行到./configure 这一步的时候.竟然提示"configure: error: libjpeg.(a|so) not found"这项错误.明明已经安装过了libjpeg 和libjpeg-devel了.可这里仍然提示找不到库文件.很明显是路径的问题.默认会在/usr/lib/目录里查找相应的文件.但用whereis libjpeg发现.libjpeg被安装在了/usr/lib64/目录里.
# whereis libjpeg libjpeg: /usr/lib/libjpeg.so /usr/lib64/libjpeg.so
1.如果提示"configure: error: libjpeg.(a|so) not found"错误
所以这里我们需要复制一份libjpeg.so到/usr/lib/目录里才可以.再次执行./configure命令即可.
cp -frp /usr/lib64/libjpeg.* /usr/lib/
2.注意过程中还会提示" Configure: error: libpng.(also) not found."错误,解决办法和上面的一样.
cp -frp /usr/lib64/libpng* /usr/lib/
3.如果提示"configure: error: Cannot find ldap libraries in /usr/lib."的话.
cp -frp /usr/lib64/libldap* /usr/lib/
说明:
通过上面的搜索其实就知道一些原因了,configure一般的搜索编译路径为/usr/lib/下,因为php默认就在/usr/lib/下找相关库文件,而x64机器上是在:/usr/lib64.这时你就可以直接把需要的库文件从/usr/lib64中拷贝到/usr/lib/中去就可以了.
configure: error: Cannot find libmysqlclient under /usr
Note that the MySQL client library is not bundled anymore
解决:
yum -y install mysql-devel
mkdir /usr/lib/mysql/
cp /usr/lib64/mysql/* /usr/lib/mysql/
页:
[1]