在Linux编译安装PHP遇到的几个问题:
首先使用yum命令从CentOS源安装所有依赖的库,这里libiconv库需要单独下载并编译安装。
其次下载php-5.2.8.tar.bz2和php-5.2.8-fpm-0.5.10.diff.gz文件,解压缩php-5.2.8.tar.bz2并打上php-5.2.8-fpm-0.5.10.diff.gz补丁,然后执行一下配置命令:
./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-mysql-dir=/usr/lib64/mysql –with-mysqli-dir=/usr/lib64/mysql/mysql_config –with-pgsql-dir=/usr/lib64/pgsql –with-iconv-dir=/usr/local/lib –with-freetype-dir=/usr/lib64 –with-jpeg-dir=/usr/lib64 –with-libxml-dir=/usr/lib64 –with-png-dir=/usr –with-gd –with-mcrypt –with-mhash –with-curl –with-openssl –with-zlib –enable-discard-path –enable-sysvsem –enable-bcmath –enable-shmop –enable-inline-optimization –enable-mbstring –enable-sockets –enable-zip –enable-xml –enable-gd-native-ttf –enable-sockets –enable-pcntl –enable-fastcgi –enable-fpm –enable-force-cgi-redirect –disable-rpath
配置错误:/usr/bin/ld: cannot find -lltdl
出现此错误大多是由于你的系统未安装libtool库导致,但即使你已安装了libtool库也可能会遇到。对此我们要做两件事情:1,确认系统是否安装了libtool库;2,为PHP编译作兼容性设置。
第一步很容做到:yum -y install libtool libtool-ltdl;
第二步由于PHP的configure指定的libltdl名为libltdl.so,为此我们只需添加一个名称连接:ln -s /usr/lib64/libltdl.so.3.1.4 /usr/lib64/libltdl.so
再次编译PHP:make ZEND_EXTRA_LIBS=’-liconv’
错误:/usr/bin/ld: cannot find -liconv
此问题是由于64位系统导致,因为我们编译安装libiconv时一般如此配置:./configure –prefix=/usr/local,这时libiconv将被安装到/usr/local/lib目录下;但是在64位系统下PHP编译时引用的是/usr/lib64/libiconv.so.2文件,所以我们还是创建一个名称连接:ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2
最后安装PHP:make install