PHP发展到7,但安装包管理是各种痛,有些错误,解决方案跟系统关系很大,别人的方案并不适合你,以下仅记录网上很难找到的解决方案:
环境:centos6.9 php-7.1.19
-
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works
解决方案: 下载安装icu 然后重新编译时指定路径 --with-icu-dir=/usr/local/icu
wget http://download.icu-project.org/files/icu4c/52.1/icu4c-52_1-src.tgz
tar xf icu4c-52_1-src.tgz
cd icu/source
mkdir /usr/local/icu
./configure --prefix=/usr/local/icu
make && make install -
configure: error: Don’t know how to define struct flock on this system, set --enable-opcache=no
解决方案: 缺少上个库,安装后系统找不到 修改 /etc/ld.so.conf
加一行: /usr/local/icu/lib
ldconfig -v
重新编译 -
undefined reference to `libiconv_open’
解决方案:
如果确实没安装libiconv可以安装后指定路径,若安装后还报错,可用以下方案: configure后,修改Makefile EXTRA_LIBS这行 -lcrypt 在最后面加上 -liconv (神奇的bug,果然PHP是最好的语言) -
configure: error: Cannot find OpenSSL’s libraries
解决方案:
一种是没有安装 openssl,另一种是安装了找不到libssl.so 文件
先安装 yum install openssl
若提示已安装,则查找文件位置
find / -name libssl.so
找到后做软连接 ln -s /usr/xxx/libssl.so /usr/lib64 重新编译 -
configure: error: off_t undefined; check your library configuration
一般为64位系统找不到变量
编辑 vim /etc/ld.so.conf.d
添加 /usr/local/lib64
ldconfig -v
另外一个可能是安装了oci扩展,在 /etc/ld.so.conf.d加入oracle客户端路径即可: /usr/lib/oracle/11.2/client64/lib -
libxml2 not found
yum install libxml2-devel