我正在尝试使用openssl支持在 CentOS 6.7 上编译 PHP7.0.1 但我收到错误。我已经将问题缩小到openssl,因为当我从下面的configure命令中删除“--with-openssl”和“--with-openssl-dir”时,我可以编译php。
我认为这可能是openssl版本的问题所以我将其升级为 openssl-1.0.2e 。我知道这很有效,因为当我发出“/ usr / bin / openssl版本”时,我得到“OpenSSL 1.0.2e 2015年12月3日”。这也证实了这个版本的openssl的路径。
这是我的完整配置命令:
./configure --prefix=/usr/lib/php701 \
--with-apxs2=/usr/local/apacheALL2412/bin/apxs \
--sysconfdir=/usr/lib/php701/phpini \
--localstatedir=/var \
--datadir=/usr/share/php \
--mandir=/usr/share/man \
--enable-fpm \
--with-fpm-user=apache2412 \
--with-fpm-group=apache2412 \
--with-config-file-path=/usr/lib/php701/phpini \
--with-zlib \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--enable-dba=shared \
--with-gdbm \
--with-gmp \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-libxml-dir=/usr/lib/php701/xml2 \
--enable-xml \
--with-curl=/opt/curlssl/ \
--with-mysql \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-mysqli \
--enable-mysqlnd \
--with-openssl=/usr \
--with-openssl-dir=/usr/bin \
--with-pdo-mysql \
--with-readline && \
make
我尝试过“--with-openssl”和“--with-openssl-dir”的不同值,但我仍然会收到以下错误。
这是错误:
ext/openssl/.libs/xp_ssl.o: In function `php_openssl_setup_crypto':
/Timstmp/PHP701-Source/php-7.0.1/ext/openssl/xp_ssl.c:1599:
undefined reference to `SSL_CTX_set_alpn_protos'
/Timstmp/PHP701-Source/php-7.0.1/ext/openssl/xp_ssl.c:1604:
undefined reference to `SSL_CTX_set_alpn_select_cb'
ext/openssl/.libs/xp_ssl.o: In function `php_openssl_sockop_set_option':
/Timstmp/PHP701-Source/php-7.0.1/ext/openssl/xp_ssl.c:2305:
undefined reference to `SSL_get0_alpn_selected'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
答案 0 :(得分:0)
我也使用openssl 1.0.1e,我也遇到了这个。你可以在这里找到解决方案: https://www.inaruto.com/2016-01-09/php7%E5%AE%89%E8%A3%85%E7%9A%84%E5%90%84%E7%A7%8D%E6%A2%97/
参见第3节,你应该编译新版本的curl,然后用(with-curl = ???)指定curl路径,再次编译php7.x。