最近在給開發同事折騰開發測試環境,其中就有 php 的編譯安裝。由於每個人的需求不一致,所以也接觸到了各種模塊編譯和集成,中間不乏各種編譯依賴報錯。
正好,搜了幾次都是下面 2 篇文章內容,乾脆就轉到自己博客,以備後用,後續有相關內容再繼續補充。
checking for BZip2 support… yes checking for BZip2 in default path… not found configure: error: Please reinstall the BZip2 distribution
解決辦法:yum install bzip2-devel
checking for cURL support… yes checking if we should use cURL for url streams… no checking for cURL in default path… not found configure: error: Please reinstall the libcurl distribution – easy.h should be in/include/curl/
解決辦法: yum install curl-devel
checking for curl_multi_strerror in -lcurl… yes checking for QDBM support… no checking for GDBM support… no checking for NDBM support… no configure: error: DBA: Could not find necessary header file(s).
解決辦法: yum install db4-devel
checking for fabsf… yes checking for floorf… yes configure: error: jpeglib.h not found.
解決辦法: yum install libjpeg-devel
checking for fabsf… yes checking for floorf… yes checking for jpeg_read_header in -ljpeg… yes configure: error: png.h not found.
解決辦法: yum install libpng-devel
checking for png_write_image in -lpng… yes If configure fails try –with-xpm-dir=
configure: error: freetype.h not found.
解決辦法: Reconfigure your PHP with the following option. --with-xpm-dir=/usr
checking for png_write_image in -lpng… yes configure: error: libXpm.(a|so) not found.
解決辦法: yum install libXpm-devel
checking for bind_textdomain_codeset in -lc… yes checking for GNU MP support… yes configure: error: Unable to locate gmp.h
解決辦法: yum install gmp-devel
checking for utf8_mime2text signature… new checking for U8T_DECOMPOSE… configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
解決辦法: yum install libc-client-devel
checking for LDAP support… yes, shared checking for LDAP Cyrus SASL support… yes configure: error: Cannot find ldap.h
解決辦法: yum install openldap-devel
checking for mysql_set_character_set in -lmysqlclient… yes checking for mysql_stmt_next_result in -lmysqlclient… no checking for Oracle Database OCI8 support… no checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!
解決辦法: yum install unixODBC-devel
checking for PostgreSQL support for PDO… yes, shared checking for pg_config… not found configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
解決辦法: yum install postgresql-devel
checking for sqlite 3 support for PDO… yes, shared checking for PDO includes… (cached) /usr/local/src/php-5.3.7/ext checking for sqlite3 files in default path… not found configure: error: Please reinstall the sqlite3 distribution
解決辦法: yum install sqlite-devel
checking for utsname.domainname… yes checking for PSPELL support… yes configure: error: Cannot find pspell
解決辦法: yum install aspell-devel
checking whether to enable UCD SNMP hack… yes checking for default_store.h… no
checking for kstat_read in -lkstat… no checking for snmp_parse_oid in -lsnmp… no checking for init_snmp in -lsnmp… no configure: error: SNMP sanity check failed. Please check config.log for more information.
解決辦法: yum install net-snmp-devel
checking whether to enable XMLWriter support… yes, shared checking for xml2-config path… (cached) /usr/bin/xml2-config checking whether libxml build works… (cached) yes checking for XSL support… yes, shared configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解決辦法: yum install libxslt-devel
configure: error: xml2-config not found. Please check your libxml2 installation.
解決辦法: yum install libxml2-devel
checking for PCRE headers location… configure: error: Could not find pcre.h in /usr
解決辦法: yum install pcre-devel
configure: error: Cannot find MySQL header files under yes. Note that the MySQL client library is not bundled anymore!
解決辦法: yum install mysql-devel
checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!
解決辦法: yum install unixODBC-devel
checking for pg_config… not found configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
解決辦法: yum install postgresql-devel
configure: error: Cannot find pspell
解決辦法: yum install pspell-devel
configure: error: Could not find net-snmp-config binary. Please check your net-snmp installation.
解決辦法: yum install net-snmp-devel
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解決辦法: yum install libxslt-devel
1、PHP 出現 segmentation fault 錯誤
現象:安裝完成後出現的這個問題讓我一頓網上狂搜,但都無濟於事。在運行任何有關 PHP 的命令時都會返回 segmentation fault 的錯誤,比如:php -v 或 php -m 等。經過不斷試錯和排查 php.ini,最終發現是在安裝完 Zend Guard Loader 之後出現的。
原因: Zend Guard Loader 的配置錯誤。
解決辦法:將 extension = ZendGuardLoader.so 改爲 zend_extension = ZendGuardLoader.so 即可。
最後,我將所有可選安裝的配置都單獨放到 /usr/local/php/php.d 下了,而不是一股腦放到 php.ini 中,這樣便於出問題時排查。
2、ICU 相關錯誤
現象:Unable to detect ICU prefix or /usr//bin/icu-config failed. Please verify ICU install prefix and make sure icu-config works
解決辦法:yum install -y icu libicu libicu-devel
關於 ICU 的編譯參數:./configure –with-icu-dir=/usr
3、bzip2 相關錯誤
現象:checking for BZip2 support… yes checking for BZip2 in default path… not found configure: error: Please reinstall the BZip2 distribution
解決辦法:yum install -y bzip2 bzip2-devel
關於 bzip2 的編譯參數:./configure –with-bz2
4、gmp 相關錯誤
現象:checking for bind_textdomain_codeset in -lc… yes checking for GNU MP support… yes configure: error: Unable to locate gmp.h
解決辦法:yum install -y gmp-devel
關於 gmp 的編譯參數:./configure –with-gmp
5、readline 相關錯誤
現象:configure: error: Please reinstall libedit – I cannot find readline.h
解決辦法:安裝 Editline Library (libedit),官網:http://thrysoee.dk/editline/
下載最新版 libedit 編譯安裝即可。
關於 readline 的編譯參數:./configure –with-readline
6、xsl 相關錯誤
現象:configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解決辦法:yum install -y libxslt libxslt-devel libxml2 libxml2-devel
關於 xsl 的編譯參數:./configure –with-xsl
7、pcre 相關錯誤
現象:checking for PCRE headers location… configure: error: Could not find pcre.h in /usr
解決辦法:yum install -y pcre-devel
關於 pcre 的編譯參數:./configure –with-pcre-dir
備註:在 CentOS 5.x 中,pcre 的最新版本爲 6.6,版本過低會導致在編譯 Apache 2.4.x 的時候出現錯誤。因此,建議編譯安裝 pcre 的最新版 8.35,替換低版本的 pcre。
以上摘自:PHP 編譯過程中常見錯誤信息的解決方法 | 林家鋪子
後續遇到 PHP 相關問題,也會繼續更新到此文當中,以備後用。