Answers:
要在Debian wheezy上构建php-5.3,您需要以下内容来修复此错误。
apt-get install libssl-dev libsslcommon2-dev
然后,您需要配置以下内容
./configure --with-libdir=/lib/x86_64-linux-gnu ...
--with-php-config /usr/local/src/php-x.x.x/scripts/php_config
。我已经编写了如何使用扩展功能编译PHP。
假设您已经拥有OpenSSL库和头文件(在rpm系统上,后者在xxxx-devel包中)...
这个问题似乎是由于如何configure
解决在文件系统周围分布的依赖性而引起的。要编译代码,编译器需要知道标头在哪里。要链接代码,链接器需要知道库在哪里。
[colin@host]$ configure .... --with-openssl-dir=/usr/include/openssl ....
...
checking OpenSSL dir for FTP... /usr/include/openssl
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
[colin@host]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h
include目录包含include文件,但是pkg-config失败,因为该库不在 / usr / include / openssl中,而在/ usr / lib中
使用/ usr作为目录再次运行configure:
configure .... --with-openssl-dir=/usr ....
...
checking OpenSSL dir for FTP... /usr
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6
checking for CRYPTO_free in -lcrypto... yes
...
搜索作为参数传递的路径以查找相关资源。
php-7.1.12
基于的解决方案Debian Jessie
。谢谢
另一个./configure
可能失败的原因是因为您尚未pkg-config
安装,例如在我的PHP7和Debian Jessie中:
sudo apt-get install pkg-config
在centos7上安装openssl-devel
yum install openssl-devel
您需要帮助配置找出evp.h文件的位置,因为默认情况下它将扫描目录并向其添加硬编码后缀以找到该文件。对于那些想了解解决方案的人,我将其详细信息保留在我的Wiki页面中。这是对我有用的东西:
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # PHP_OPENSSL_DIR="/usr /usr/lib/x86_64-linux-gnu"
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # ./configure --with-libdir=""
[...]
checking for DSA_get_default_method in -lssl... yes
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6 # <------------------------------------- YES !
[...]
config.status: creating config.h
config.status: config.h is unchanged
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd #
YMMV(路径不同)。如果那对您不起作用,请检查Wiki页面,它将帮助您确定要放置的路径。