PHP 5.6 的 Zend Guard Loader 在 Discuz!X 3.2 下工作不是很正常, 安装有 Zend 加密的插件, 总是提示 Zend 校验失败. 想来想去, 应该是 PHP 的版本过高的缘故, 虽然 PHP 5.6 正常运行 Discuz!X 3.2 没有问题, 但是不代表插件也没有问题, 毕竟几年前的产品了
之后试了下 PHP 5.4, 还是不行, 于是只能被迫再安装多一个 PHP 5.3
因为 PHP 5.4 当时安装的时候, 按照是以前写的 《CentOS 7 和 Nginx 下实现多版本 PHP 的共存》进行安装的, 所以想都没想就继续用了相同的命令, 没想到出了很多问题, 各种谷歌百度之后终于解决完了, 成功安装了 PHP 5.3, 后台安装 Zend 加密插件也没有问题了, 所以接下来就来分享一下当时遇到的一些问题的解决方案
首先说明一下 : 这篇文章的错误是在本博客所有的教程下可能出现的, 所以如果不是按照本博客里的教程安装的话, 可能出现其他错误, 请自行寻找解决方案
1. configure : error : mysql configure failed. Please check config.log for more information
具体的错误原理也不是很清楚, 博主只学了一点 PHP, 暂时还没开始学 MySQL, 不过猜测大概就是 MySQL 的版本过高的缘故
解决方案 : 将 mysql、mysqli 和 pdo-mysql 的选项改成 --with-xxx=mysqlnd 即可
即原来的安装命令需要改为 :
./configure --prefix=/usr/local/php53 --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex
就可以解决这个问题
2. /usr/bin/ld : cannot find -lltdl
collect2 : error : ld returned 1 exit status
make : *** [sapi/fpm/php-fpm] Error 1
这个问题的原因是因为少了一个依赖 : libltdl-devel
如果你是安装本博客的教程进行配置的, 那么这个依赖是没有安装的
那么解决方案是 : 安装 libltdl-devel
yum install -y libtool-ltdl-devel
3. /usr/bin/ld : ext/intl/msgformat/msgformat_helpers.o : undefined reference to symbol '__gxx_personality_v@@CXXABI_1.3'
/usr/lib64/libstdc++.so.6 : error adding symbols : DSO missing form command line
collect2 : error : ld returned 1 exit status
make : *** [sapi/fpm/php-fpm] Error 1
这个问题的原因同样是没有安装依赖
解决方案 :
yum install -y bison flex libtiff-devel ncurses-devel pam-devel
4. /usr/bin/ld.bfd.real: ext/intl/msgformat/msgformat_helpers.o: undefined reference ...
/usr/bin/ld.bfd.real: note: '__gxx_personality_v0@@CXXABI_1.3' is defined in DSO ...
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] Error 1
Error
这个问题据说官方都没有一个很完善的解决方案, 不过输入以下命令可以解决这个问题
sed -i '/^BUILD_/ s/\$(CC)/\$(CXX)/g' Makefile
解决上面问题之后重新编译安装, 然后 PHP 5.3 终于安装完成了