Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Apr 2019 18:12:48 -0300
From:      Marcel Bonnet <marcelbonnet@gmail.com>
To:        Stefan Bethke <stb@lassitu.de>
Cc:        Mathieu Arnold <mat@freebsd.org>, Kurt Jaeger <pi@freebsd.org>,  FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: PHP 7.2: SIGSEGV in OpenSSL
Message-ID:  <CAPe0dBngo6CXWrpkE5BdMSH5U4LkzGw_1iJ1pwfzNx3r5GMpnQ@mail.gmail.com>
In-Reply-To: <CAPe0dB=hfz8gt3wZe2y8LXFU8w6ucfrXvJOjXxKefuz5ro-psg@mail.gmail.com>
References:  <67841009-B4BC-4F0A-BB53-77487EE19CBD@lassitu.de> <CAPe0dBk7DAq9cWSzjwcKGzadjeDtjcmz3KmQq2hD=sYf-JOgKQ@mail.gmail.com> <20190423160110.GS72200@home.opsec.eu> <0D187548-4221-4DA5-9A22-8478D9FB32F3@lassitu.de> <20190424205044.ll3rsu3hhfwxrxof@atuin.in.mat.cc> <0AEC703C-5ACE-44BD-A9D3-70ABBA8785EB@lassitu.de> <CAPe0dB=hfz8gt3wZe2y8LXFU8w6ucfrXvJOjXxKefuz5ro-psg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi.
I installed more extensions and noticed that ldap.so, indeed must follow
openssl to avoid Segmentation Fault.

mod_php73-7.3.4

php73-7.3.4

php73-bcmath-7.3.4

php73-bz2-7.3.4

php73-ctype-7.3.4

php73-curl-7.3.4

php73-dom-7.3.4

php73-exif-7.3.4

php73-extensions-1.0

php73-fileinfo-7.3.4

php73-filter-7.3.4

php73-gd-7.3.4

php73-gettext-7.3.4

php73-hash-7.3.4

php73-iconv-7.3.4

php73-intl-7.3.4

php73-json-7.3.4

php73-ldap-7.3.4

php73-mbstring-7.3.4

php73-opcache-7.3.4

php73-openssl-7.3.4

php73-pdo-7.3.4

php73-pdo_mysql-7.3.4

php73-pdo_sqlite-7.3.4

php73-phar-7.3.4

php73-posix-7.3.4

php73-session-7.3.4

php73-simplexml-7.3.4

php73-soap-7.3.4

php73-sockets-7.3.4

php73-sqlite3-7.3.4

php73-tokenizer-7.3.4

php73-xml-7.3.4

php73-xmlreader-7.3.4

php73-xmlwriter-7.3.4

php73-zip-7.3.4

php73-zlib-7.3.4



extension=3Dsession.so

extension=3Dfileinfo.so

extension=3Dsimplexml.so

extension=3Dctype.so

extension=3Dmbstring.so

extension=3Dtokenizer.so

extension=3Dfilter.so

extension=3Dxmlwriter.so

extension=3Dgd.so

extension=3Dgettext.so

extension=3Diconv.so

extension=3Dexif.so

extension=3Dzlib.so

extension=3Dbz2.so

extension=3Dopenssl.so

; LDAP and CURL must be loaded after openssl

extension=3Dldap.so

extension=3Dcurl.so

extension=3Ddom.so

extension=3Dhash.so

extension=3Dxmlreader.so

extension=3Dbcmath.so

extension=3Dsoap.so

extension=3Dpdo.so

extension=3Dpdo_mysql.so

extension=3Dpdo_sqlite.so

extension=3Dsockets.so

extension=3Dxml.so

; additional extension(s) not known by fixphpextorder.sh

extension=3Dintl.so

extension=3Djson.so

extension=3Dposix.so

extension=3Dsqlite3.so

extension=3Dzip.so

extension=3Dphar.so

On Thu, 25 Apr 2019 at 17:07, Marcel Bonnet <marcelbonnet@gmail.com> wrote:

>
>
> On Wed, 24 Apr 2019 at 18:03, Stefan Bethke <stb@lassitu.de> wrote:
>
>> Am 24.04.2019 um 22:50 schrieb Mathieu Arnold <mat@FreeBSD.org>:
>>
>> On Wed, Apr 24, 2019 at 06:34:06PM +0200, Stefan Bethke wrote:
>>
>> Am 23.04.2019 um 18:01 schrieb Kurt Jaeger <pi@freebsd.org>:
>>
>> Hi!
>>
>> Did you find a solution? Please let me know.
>>
>>
>> There's a well-known problem in the sequence in which php modules
>> are loaded. I don't know if this is the case here as well,
>> but that's what we do:
>>
>> fetch -o fixphpextorder \
>>       https://people.freebsd.org/~ohauer/scripts/fixphpextorder.sh
>> chmod 755 fixphpextorder
>>
>> cd /usr/local/etc/php
>> cat ext-*ini > extensions.ini
>> fixphpextorder
>> mv extensions.ini.new extensions.ini
>> rm ext-*ini
>>
>> Please test and report if it fixes the problem.
>>
>>
>> Thanks Kurt, it appears to fix (or at least work around) the problem.
>>
>> Why is the default load order broken? Why does it not affect everyone?
>>
>> I moved all the individual inis into a bak subdir, and now only have an
>> extensions.ini.
>>
>> If I understand correctly, mod_php/PHP reads the individual inis in
>> order. Why aren=E2=80=99t they in the right order? Can this be fixed in =
the ports
>> for the PHP modules?
>>
>>
>> Could you give the order that works for you, so that we can try to
>> figure out which module is making it break ?
>>
>> Because there is no "right" order, there is an order that can work for
>> most people, and from time to time, two libs have conflicting symbols,
>> but it is not possible to detect that.  So I made up an order that
>> should be ok, but some time is not.
>>
>>
>> This is the order I=E2=80=99m actively using now:
>> $ cat extensions.ini
>> extension=3Dsession.so
>> extension=3Dfileinfo.so
>> extension=3Dldap.so
>> extension=3Dsimplexml.so
>> extension=3Dctype.so
>> extension=3Dmbstring.so
>> extension=3Dtokenizer.so
>> extension=3Dfilter.so
>> extension=3Dpgsql.so
>> extension=3Dmcrypt.so
>> extension=3Dgd.so
>> extension=3Dgettext.so
>> extension=3Diconv.so
>> extension=3Dzlib.so
>> extension=3Dcurl.so
>> extension=3Dxmlrpc.so
>> extension=3Dbz2.so
>> extension=3Dopenssl.so
>> extension=3Ddom.so
>> extension=3Dhash.so
>> extension=3Dwddx.so
>> extension=3Dmemcache.so
>> extension=3Dsoap.so
>> extension=3Dpdo.so
>> extension=3Dpdo_mysql.so
>> extension=3Dmysqli.so
>> extension=3Dsockets.so
>> extension=3Dxml.so
>> ; additional extension(s) not known by fixphpextorder.sh
>> extension=3Dintl.so
>> extension=3Djson.so
>> extension=3Dsqlite3.so
>> extension=3Dzip.so
>> extension=3Dmemcached.so
>> extension=3Dpdo_pgsql.so
>> extension=3Dphar.so
>>
>> This is the order as installed by the ports (at least I think that=E2=80=
=99s the
>> order PHP will read the files):
>> $ cat $(echo bak/*.ini|sort)
>> zend_extension=3Dopcache.so
>> extension=3Dsession.so
>> extension=3Dbz2.so
>> extension=3Dctype.so
>> extension=3Dcurl.so
>> extension=3Ddom.so
>> extension=3Dfileinfo.so
>> extension=3Dfilter.so
>> extension=3Dgd.so
>> extension=3Dgettext.so
>> extension=3Dhash.so
>> extension=3Diconv.so
>> extension=3Dintl.so
>> extension=3Djson.so
>> extension=3Dldap.so
>> extension=3Dmbstring.so
>> extension=3Dmcrypt.so
>> extension=3Dmysqli.so
>> extension=3Dopenssl.so
>> extension=3Dpdo.so
>> extension=3Dpgsql.so
>> extension=3Dsimplexml.so
>> extension=3Dsoap.so
>> extension=3Dsockets.so
>> extension=3Dsqlite3.so
>> extension=3Dtokenizer.so
>> extension=3Dxml.so
>> extension=3Dzip.so
>> extension=3Dzlib.so
>> extension=3Dmemcache.so
>> extension=3Dmemcached.so
>> extension=3Dpdo_mysql.so
>> extension=3Dpdo_pgsql.so
>> extension=3Dphar.so
>> extension=3Dwddx.so
>> extension=3Dxmlrpc.so
>>
>> This is the contents of bak (the former contents of /usr/local/etc/php):
>> $ ls bak
>> ext-10-opcache.ini ext-20-intl.ini ext-20-sqlite3.ini
>> ext-18-session.ini ext-20-json.ini ext-20-tokenizer.ini
>> ext-20-bz2.ini ext-20-ldap.ini ext-20-xml.ini
>> ext-20-ctype.ini ext-20-mbstring.ini ext-20-zip.ini
>> ext-20-curl.ini ext-20-mcrypt.ini ext-20-zlib.ini
>> ext-20-dom.ini ext-20-mysqli.ini ext-30-memcache.ini
>> ext-20-fileinfo.ini ext-20-openssl.ini ext-30-memcached.ini
>> ext-20-filter.ini ext-20-pdo.ini ext-30-pdo_mysql.ini
>> ext-20-gd.ini ext-20-pgsql.ini ext-30-pdo_pgsql.ini
>> ext-20-gettext.ini ext-20-simplexml.ini ext-30-phar.ini
>> ext-20-hash.ini ext-20-soap.ini ext-30-wddx.ini
>> ext-20-iconv.ini ext-20-sockets.ini ext-30-xmlrpc.ini
>>
>>
>> These are the PHP packages I have installed, minus the web apps:
>> $ pkg info -r php72
>> php72-7.2.17_2:
>> php72-xml-7.2.17_2
>> php72-hash-7.2.17_2
>> php72-session-7.2.17_2
>> php72-openssl-7.2.17_2
>> php72-xmlrpc-7.2.17_2
>> php72-mysqli-7.2.17_2
>> php72-mbstring-7.2.17_2
>> php72-phar-7.2.17_2
>> php72-ctype-7.2.17_2
>> php72-tokenizer-7.2.17_2
>> php72-json-7.2.17_2
>> php72-filter-7.2.17_2
>> php72-gd-7.2.17_2
>> php72-zlib-7.2.17_2
>> php72-zip-7.2.17_2
>> php72-bz2-7.2.17_2
>> php72-iconv-7.2.17_2
>> php72-fileinfo-7.2.17_2
>> php72-pgsql-7.2.17_2
>> php72-opcache-7.2.17_2
>> php72-wddx-7.2.17_2
>> php72-simplexml-7.2.17_2
>> php72-dom-7.2.17_2
>> php72-pecl-mcrypt-1.0.2
>> php72-soap-7.2.17_2
>> php72-ldap-7.2.17_2
>> php72-curl-7.2.17_2
>> php72-sqlite3-7.2.17_2
>> php72-pdo-7.2.17_2
>> php72-memcache-4.0.3
>> php72-pecl-memcached-3.1.3
>> php72-sockets-7.2.17_2
>> php72-intl-7.2.17_2
>> php72-gettext-7.2.17_2
>> php72-pdo_pgsql-7.2.17_2
>> php72-pdo_mysql-7.2.17_2
>>
>>
>>
>> --
>> Stefan Bethke <stb@lassitu.de>   Fon +49 151 14070811
>>
>> Thank you so much, fellows!
>
> These are the extensions currently installed:
> [@machine php #]  pkg info -iqox php73
> lang/php73
> devel/php-composer
> textproc/php73-ctype
> ftp/php73-curl
> security/php73-filter
> security/php73-hash
> devel/php73-intl
> devel/php73-json
> converters/php73-mbstring
> www/php73-opcache
> security/php73-openssl
> archivers/php73-phar
>
> The fixphpextorder script did not work. So, I tried to change the order o=
f
> any extension that seemed to require openssl . Reading the coredump, I
> supposed some lib was not finding openssl into the stack.
> So I put curl.so below openssl.so , and now it works.
>
> [@machine php #]  cat extensions.ini
> extension=3Dctype.so
> extension=3Dmbstring.so
> extension=3Dfilter.so
> extension=3Dopenssl.so
> extension=3Dcurl.so
> extension=3Dhash.so
> ; additional extension(s) not known by fixphpextorder.sh
> extension=3Dintl.so
> extension=3Djson.so
> extension=3Dphar.so
>
> Cheers,
>
> --
> Marcel Bonnet
>
>

--=20
Marcel Bonnet
github.com/marcelbonnet/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPe0dBngo6CXWrpkE5BdMSH5U4LkzGw_1iJ1pwfzNx3r5GMpnQ>