Bug #77392 [Opn]: ./configure fails on OpenSSL library searches
| From: | john dot iliffe at iliffe dot ca | Date: | Sat, 19 Jan 2019 02:06:19 +0000 |
| Subject: | Bug #77392 [Opn]: ./configure fails on OpenSSL library searches | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-219079@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77392&edit=1
ID: 77392
User updated by: john dot iliffe at iliffe dot ca
Reported by: john dot iliffe at iliffe dot ca
Summary: ./configure fails on OpenSSL library searches
Status: Open
Type: Bug
Package: *Configuration Issues
Operating System: Linux
PHP Version: 7.3.0
Block user comment: N
Private report: N
New Comment:
I have been playing with this for a while and I'm still stuck in a loop. I set up a link as
suggested:
/usr/openssl->/usr/openssl-1.1.0i
and a quick check shows that this resolves correctly:
cd /usr/openssl; ls gives the expected result. (I put a dummy file name on the correct directory
to ensure the link was going to the right place)
The should resolve (in line 2335 of the config script) to /usr/openssl/include/openssl/ and it does,
evp.h is present and the configure test in line 2344 passes here.
BUT, my reading of the script is that line 2339 should set OPENSSL_LIBDIR to:
/usr/openssl-1.1.0i/lib (PHP_LIBDIR is set to "lib") so that should be the result of:
$i=/usr/openssl-1.1.0i
$LIB_DIR=lib
This errors out with the message "Cannot find OpenSSL's libraries, which arises from line
2349. A quick check using ls -l shows that the expected files are in the expected places.
What am I missing?
For completeness, here is the configuration:
./configure prefix=/usr/php-7.3.0 --enable-fpm --with-fpm-user=phpfpm --with-libdir=lib64
--with-fpm-group=phpfpm --with-fpm-systemd --disable-short-tags --with-openssl=/usr/openssl
--with-pcre-regex --with-imap=/usr/lib64 --with-imap-ssl=/usr/openssl
--with-pgsql=/usr/postgres-9.6.2 --enable-zip --with-pear
with this link present:
lrwxrwxrwx. 1 root root 14 Jan 18 13:09 /usr/openssl -> openssl-1.1.0i
and:
ls -l /usr/openssl/lib
total 9104
drwxr-xr-x. 2 root root 55 Aug 29 23:13 engines-1.1
-rw-r--r--. 1 root root 5030226 Aug 29 23:13 libcrypto.a
lrwxrwxrwx. 1 root root 16 Aug 29 23:13 libcrypto.so -> libcrypto.so.1.1
-rwxr-xr-x. 1 root root 2974920 Aug 29 23:13 libcrypto.so.1.1
-rw-r--r--. 1 root root 775792 Aug 29 23:13 libssl.a
lrwxrwxrwx. 1 root root 13 Aug 29 23:13 libssl.so -> libssl.so.1.1
-rwxr-xr-x. 1 root root 529648 Aug 29 23:13 libssl.so.1.1
drwxr-xr-x. 2 root root 61 Aug 29 23:13 pkgconfig
Previous Comments:
------------------------------------------------------------------------
[2019-01-10 21:11:33] bugs dot php dot net at mundpropaganda dot net
Check this out: https://github.com/php/php-src/blob/PHP-7.3/acinclude.m4#L2327
The header files are supposed to be at "{prefix}/includes/openssl/". So your symlinks
needs to be "/usr/includes/openssl -> /usr/openssl-1.1.0i", then run configure with
"--with-openssl=/usr".
------------------------------------------------------------------------
[2019-01-10 17:44:25] john dot iliffe at iliffe dot ca
Thank you for the response.
I tried as suggested, set a link from /usr/openssl -> /usr/openssl-1.1.0i and changed the
configuration as follows:
./configure prefix=/usr/php-7.3.0 --enable-fpm --with-fpm-user=phpfpm --with-libdir=lib64
--with-fpm-group=phpfpm --with-fpm-systemd --disable-short-tags --with-openssl=/usr/openssl
--with-pcre-regex --with-imap=/usr/lib64 --with-imap-ssl=/usr/openssl
--with-pgsql=/usr/postgres-9.6.2 --enable-zip --with-pear
which results in error "Cannot find OpenSSl's libraries". I also tried changing the
locations of OpenSSL to just /usr (ie --with-openssl=/usr) and that results in error "Cannot
find OpenSSL's <evp.h>".
Since there are two different places in the config where the openssl path is required, I tried
various combinations of the above but all ended with "Cannot find OpenSSL's
libraries"
Yes, I have several versions of OpenSSL on this server, each installed as noted under
"/usr/<openssl version number>" and unfortunately they are included in various
compiles (like Apache).
Thanks again.
------------------------------------------------------------------------
[2019-01-10 15:05:16] bugs dot php dot net at mundpropaganda dot net
"-qversion" should be perfectly fine. It caters to older versions of gcc.
I think you need to provide the directory _prefix_ to "--with-openssl", not the actual
openssl directory.
So if your openssl install really lives in "/usr/openssl-1.1.0i", you need to create a
symlink à la "/usr/openssl -> /usr/openssl-1.1.0i" and run configure with
"--with-openssl=/usr"
See also: http://php.net/manual/en/openssl.installation.php#115909
------------------------------------------------------------------------
[2018-12-31 22:11:20] john dot iliffe at iliffe dot ca
Description:
------------
This report contains elements of bug reports 72363 (PHP 7.0 and 7.1 and 75726 (PHP 7.1.12). Note
the non-standard location of OpenSSL on my server. It appears that the with-openssl= configuration
variable is not being picked up.
./configure prefix=/usr/php-7.3.0 --enable-fpm --with-fpm-user=phpfpm --with-libdir=lib64
--with-fpm-group=phpfpm --with-fpm-systemd --disable-short-tags --with-openssl=/usr/openssl-1.1.0i
--with-pcre-regex --with-imap=/usr/lib64 --with-imap-ssl=/usr/openssl-1.1.0i/include/openssl
--with-pgsql=/usr/postgres-9.6.2/bin --enable-zip --with-pear
Fails with one of several errors:
configure: error: Cannot find OpenSSL's libraries
- can sometimes be resolved by changing to with-openssl=/usr/openssl-1.1.0i/lib
but this leads to
configure: error: Cannot find OpenSSL's <evp.h>
- can resolve this by coding the FULL path to the include libraries:
OPENSSL_INCDIR=/usr/openssl-1.1.0i/include/openssl in line 19052 and several
other places where it occurs. Unfortunately, this messes up libs again.
There is a typo in lines 3843 and 45626 of the configure file, "-qversion" should be
"--version". It gives a configure fatal error when encountered but the configuration
continues anyway, at least to the errors above.
Test script:
---------------
The ./configure shown in the previous section
Expected result:
----------------
I would expect a valid make file for the compile step.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77392&edit=1