Eine Geschichte über die Schwierigkeiten beim Versuch, PHP 7.4 auf CentOS 8 von GCE zu erstellen

Fazit

Beim Erstellen von PHP 7.4 mit den Konfigurationsoptionen "--with-openssl" und "--with-pgsql" dürfen das im Quellbuild installierte Betriebssystempaket und OpenSSL nicht gleichzeitig vorhanden sein, wenn die Haupt- und Nebenversion identisch sind. ..

Umgebung

--CentOS Linux Release 8.2.2004 (Core) ... Verwenden der GCP Compute Engine --OpenSSL 1.1.1c FIPS 28 Mai 2019 ... Betriebssystempaket, standardmäßig installiert

OpenSSL Build

Ich möchte die neueste OpenSSL (1.1.1h zu diesem Zeitpunkt) installieren, wie folgt erstellen und installieren

$ sudo dnf install wget
$ wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
$ tar zxvf openssl-1.1.1h.tar.gz
$ cd openssl-1.1.1h/
$ sudo dnf install perl gcc
$ ./config -fPIC shared --prefix=/usr/local/openssl --openssldir=/usr/local/ssl
$ make
$ make test
$ sudo make install

Obwohl hier weggelassen, wird Apache 2.4.46 ebenfalls erstellt und installiert. Im Folgenden sind die zu diesem Zeitpunkt installierten Pakete aufgeführt

$ sudo dnf install bzip2 expat-devel pcre-devel

Erstellen Sie PHP 7.4

Installation der erforderlichen Pakete

$ sudo dnf install libxml2-devel sqlite-devel oniguruma-devel libpq-devel

Bauen

$ wget https://www.php.net/distributions/php-7.4.12.tar.bz2
$ tar xvf php-7.4.12.tar.bz2
$ cd php-7.4.12
$ ./configure \
  --with-config-file-path=/etc/php7 \
  --enable-mbstring \
  --with-apxs2=/usr/local/apache2.4/bin/apxs \
  --with-pgsql \
  --with-zlib-dir \
  --disable-ipv6 \
  --with-openssl \
  OPENSSL_CFLAGS=-I/usr/local/openssl/include \
  OPENSSL_LIBS=-L/usr/local/openssl/lib
$ make

Der Beginn der Not ...

Erste Wand

Es ist der folgende Fehler aufgetreten

/usr/local/src/php-7.4.12/ext/pgsql/pgsql.c: In function ‘zif_pg_last_oid’:
/usr/local/src/php-7.4.12/ext/pgsql/pgsql.c:3143:27: error: assignment to expression with array type
  Z_STRVAL_P(return_value) = (char *) PQoidStatus(pgsql_result);
                           ^
・
・
/usr/local/src/php-7.4.12/ext/pgsql/pgsql.c: In function ‘zif_pg_copy_to’:
/usr/local/src/php-7.4.12/ext/pgsql/pgsql.c:4174:11: error: ‘ret’ undeclared (first use in this function); did you mean ‘recv’?
      if ((ret = PQgetline(pgsql, copybuf, COPYBUFSIZ))) {
           ^~~
           recv
・
・
make: *** [Makefile:1101: ext/pgsql/pgsql.lo] Error 1

Ich dachte, es gibt ein Problem mit der Quelle, aber selbst wenn ich das gleiche Verfahren in der folgenden Umgebung ausgeführt habe, wurde es nicht reproduziert.

--CentOS Linux Release 7.8.2003 (Core) ... Verwenden der GCP Compute Engine --OpenSSL 1.0.2k-fips 26 Jan 2017 ... Betriebssystempaket, standardmäßig installiert

Einmal interpretiert, als ob es an einer anderen Version von gcc lag

Bei der Untersuchung der Problemumgehung bin ich auf die folgende Website gestoßen

Ich habe versucht, verschiedene Versionen von GCC unter CentOS 8-Qiita zu erstellen

Nach diesen Informationen unterscheidet sich die Standardspezifikation des Sprachstandards je nach Version von gcc. Versuchen Sie sofort, mit -std = gnu89 neu zu erstellen. Dies war die Standardspezifikation in gcc 4.8.5

$ ./configure \
  --with-config-file-path=/etc/php7 \
  --enable-mbstring \
  --with-apxs2=/usr/local/apache2.4/bin/apxs \
  --with-pgsql \
  --with-zlib-dir \
  --disable-ipv6 \
  --with-openssl \
  OPENSSL_CFLAGS=-I/usr/local/openssl/include \
  OPENSSL_LIBS=-L/usr/local/openssl/lib \
  CFLAGS="-std=gnu89"
$ make

Der gleiche Fehler wird jedoch angezeigt und kann nicht behoben werden ... Ich habe darüber nachgedacht, dieselbe Version von gcc wie CentOS7 zu erstellen und zu installieren, aber ich hatte das Gefühl, dass dies keine grundlegende Lösung ist. Deshalb habe ich den Fehler behoben und neu erstellt ...

Zweite Wand

Obwohl der an der ersten Wand angezeigte Fehler nicht mehr angezeigt wird, ist der folgende Fehler aufgetreten

/usr/bin/ld: ext/openssl/.libs/xp_ssl.o: undefined reference to symbol 'SSL_select_next_proto@@OPENSSL_1_1_0'
//usr/local/openssl/lib/libssl.so.1.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:268: sapi/cli/php] Error 1

?? Unten der Befehl mit dem Fehler

/bin/sh /usr/local/src/php-7.4.12/libtool --silent --preserve-dup-deps --mode=link cc -export-dynamic -I/usr/include -g -O2 -fvisibility=hidden -Wall -Wno-strict-aliasing -DZEND_SIGNALS   -L/usr/local/openssl/lib -L/usr/lib64  -R /usr/local/openssl/lib -R /usr/lib64 ext/date/php_date.lo ext/date/lib/astro.lo ext/date/lib/dow.lo ext/date/lib/parse_date.lo ext/date/lib/parse_tz.lo ext/date/lib/timelib.lo ext/date/lib/tm2unixtime.lo ext/date/lib/unixtime2tm.lo ext/date/lib/parse_iso_intervals.lo ext/date/lib/interval.lo ext/libxml/libxml.lo ext/openssl/openssl.lo ext/openssl/xp_ssl.lo ext/pcre/pcre2lib/pcre2_auto_possess.lo ext/pcre/pcre2lib/pcre2_chartables.lo ext/pcre/pcre2lib/pcre2_compile.lo ext/pcre/pcre2lib/pcre2_config.lo ext/pcre/pcre2lib/pcre2_context.lo ext/pcre/pcre2lib/pcre2_dfa_match.lo ext/pcre/pcre2lib/pcre2_error.lo ext/pcre/pcre2lib/pcre2_jit_compile.lo ext/pcre/pcre2lib/pcre2_maketables.lo ext/pcre/pcre2lib/pcre2_match.lo ext/pcre/pcre2lib/pcre2_match_data.lo ext/pcre/pcre2lib/pcre2_newline.lo ext/pcre/pcre2lib/pcre2_ord2utf.lo ext/pcre/pcre2lib/pcre2_pattern_info.lo ext/pcre/pcre2lib/pcre2_serialize.lo ext/pcre/pcre2lib/pcre2_string_utils.lo ext/pcre/pcre2lib/pcre2_study.lo ext/pcre/pcre2lib/pcre2_substitute.lo ext/pcre/pcre2lib/pcre2_substring.lo ext/pcre/pcre2lib/pcre2_tables.lo ext/pcre/pcre2lib/pcre2_ucd.lo ext/pcre/pcre2lib/pcre2_valid_utf.lo ext/pcre/pcre2lib/pcre2_xclass.lo ext/pcre/pcre2lib/pcre2_find_bracket.lo ext/pcre/pcre2lib/pcre2_convert.lo ext/pcre/pcre2lib/pcre2_extuni.lo ext/pcre/pcre2lib/pcre2_script_run.lo ext/pcre/php_pcre.lo ext/sqlite3/sqlite3.lo ext/ctype/ctype.lo ext/dom/php_dom.lo ext/dom/attr.lo ext/dom/document.lo ext/dom/domerrorhandler.lo ext/dom/domstringlist.lo ext/dom/domexception.lo ext/dom/namelist.lo ext/dom/processinginstruction.lo ext/dom/cdatasection.lo ext/dom/documentfragment.lo ext/dom/domimplementation.lo ext/dom/element.lo ext/dom/node.lo ext/dom/string_extend.lo ext/dom/characterdata.lo ext/dom/documenttype.lo ext/dom/domimplementationlist.lo ext/dom/entity.lo ext/dom/nodelist.lo ext/dom/text.lo ext/dom/comment.lo ext/dom/domconfiguration.lo ext/dom/domimplementationsource.lo ext/dom/entityreference.lo ext/dom/notation.lo ext/dom/xpath.lo ext/dom/dom_iterators.lo ext/dom/typeinfo.lo ext/dom/domerror.lo ext/dom/domlocator.lo ext/dom/namednodemap.lo ext/dom/userdatahandler.lo ext/fileinfo/fileinfo.lo ext/fileinfo/libmagic/apprentice.lo ext/fileinfo/libmagic/apptype.lo ext/fileinfo/libmagic/ascmagic.lo ext/fileinfo/libmagic/cdf.lo ext/fileinfo/libmagic/cdf_time.lo ext/fileinfo/libmagic/compress.lo ext/fileinfo/libmagic/encoding.lo ext/fileinfo/libmagic/fsmagic.lo ext/fileinfo/libmagic/funcs.lo ext/fileinfo/libmagic/is_json.lo ext/fileinfo/libmagic/is_tar.lo ext/fileinfo/libmagic/magic.lo ext/fileinfo/libmagic/print.lo ext/fileinfo/libmagic/readcdf.lo ext/fileinfo/libmagic/softmagic.lo ext/fileinfo/libmagic/der.lo ext/fileinfo/libmagic/buffer.lo ext/filter/filter.lo ext/filter/sanitizing_filters.lo ext/filter/logical_filters.lo ext/filter/callback_filter.lo ext/hash/hash.lo ext/hash/hash_md.lo ext/hash/hash_sha.lo ext/hash/hash_ripemd.lo ext/hash/hash_haval.lo ext/hash/hash_tiger.lo ext/hash/hash_gost.lo ext/hash/hash_snefru.lo ext/hash/hash_whirlpool.lo ext/hash/hash_adler32.lo ext/hash/hash_crc32.lo ext/hash/hash_fnv.lo ext/hash/hash_joaat.lo ext/hash/sha3/generic64lc/KeccakP-1600-opt64.lo ext/hash/sha3/generic64lc/KeccakHash.lo ext/hash/sha3/generic64lc/KeccakSponge.lo ext/hash/hash_sha3.lo ext/iconv/iconv.lo ext/json/json.lo ext/json/json_encoder.lo ext/json/json_parser.lo ext/json/json_scanner.lo ext/mbstring/mbstring.lo ext/mbstring/php_unicode.lo ext/mbstring/mb_gpc.lo ext/mbstring/php_mbregex.lo ext/mbstring/libmbfl/filters/html_entities.lo ext/mbstring/libmbfl/filters/mbfilter_7bit.lo ext/mbstring/libmbfl/filters/mbfilter_ascii.lo ext/mbstring/libmbfl/filters/mbfilter_base64.lo ext/mbstring/libmbfl/filters/mbfilter_big5.lo ext/mbstring/libmbfl/filters/mbfilter_byte2.lo ext/mbstring/libmbfl/filters/mbfilter_byte4.lo ext/mbstring/libmbfl/filters/mbfilter_cp1251.lo ext/mbstring/libmbfl/filters/mbfilter_cp1252.lo ext/mbstring/libmbfl/filters/mbfilter_cp1254.lo ext/mbstring/libmbfl/filters/mbfilter_cp5022x.lo ext/mbstring/libmbfl/filters/mbfilter_cp51932.lo ext/mbstring/libmbfl/filters/mbfilter_cp850.lo ext/mbstring/libmbfl/filters/mbfilter_cp866.lo ext/mbstring/libmbfl/filters/mbfilter_cp932.lo ext/mbstring/libmbfl/filters/mbfilter_cp936.lo ext/mbstring/libmbfl/filters/mbfilter_gb18030.lo ext/mbstring/libmbfl/filters/mbfilter_euc_cn.lo ext/mbstring/libmbfl/filters/mbfilter_euc_jp.lo ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.lo ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.lo ext/mbstring/libmbfl/filters/mbfilter_euc_kr.lo ext/mbstring/libmbfl/filters/mbfilter_euc_tw.lo ext/mbstring/libmbfl/filters/mbfilter_htmlent.lo ext/mbstring/libmbfl/filters/mbfilter_hz.lo ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.lo ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.lo ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.lo ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.lo ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.lo ext/mbstring/libmbfl/filters/mbfilter_jis.lo ext/mbstring/libmbfl/filters/mbfilter_koi8r.lo ext/mbstring/libmbfl/filters/mbfilter_armscii8.lo ext/mbstring/libmbfl/filters/mbfilter_qprint.lo ext/mbstring/libmbfl/filters/mbfilter_sjis.lo ext/mbstring/libmbfl/filters/mbfilter_sjis_open.lo ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.lo ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.lo ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.lo ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.lo ext/mbstring/libmbfl/filters/mbfilter_ucs2.lo ext/mbstring/libmbfl/filters/mbfilter_ucs4.lo ext/mbstring/libmbfl/filters/mbfilter_uhc.lo ext/mbstring/libmbfl/filters/mbfilter_utf16.lo ext/mbstring/libmbfl/filters/mbfilter_utf32.lo ext/mbstring/libmbfl/filters/mbfilter_utf7.lo ext/mbstring/libmbfl/filters/mbfilter_utf7imap.lo ext/mbstring/libmbfl/filters/mbfilter_utf8.lo ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.lo ext/mbstring/libmbfl/filters/mbfilter_uuencode.lo ext/mbstring/libmbfl/filters/mbfilter_koi8u.lo ext/mbstring/libmbfl/mbfl/mbfilter.lo ext/mbstring/libmbfl/mbfl/mbfilter_8bit.lo ext/mbstring/libmbfl/mbfl/mbfilter_pass.lo ext/mbstring/libmbfl/mbfl/mbfilter_wchar.lo ext/mbstring/libmbfl/mbfl/mbfl_convert.lo ext/mbstring/libmbfl/mbfl/mbfl_encoding.lo ext/mbstring/libmbfl/mbfl/mbfl_filter_output.lo ext/mbstring/libmbfl/mbfl/mbfl_ident.lo ext/mbstring/libmbfl/mbfl/mbfl_language.lo ext/mbstring/libmbfl/mbfl/mbfl_memory_device.lo ext/mbstring/libmbfl/mbfl/mbfl_string.lo ext/mbstring/libmbfl/mbfl/mbfl_allocators.lo ext/mbstring/libmbfl/nls/nls_de.lo ext/mbstring/libmbfl/nls/nls_en.lo ext/mbstring/libmbfl/nls/nls_ja.lo ext/mbstring/libmbfl/nls/nls_kr.lo ext/mbstring/libmbfl/nls/nls_neutral.lo ext/mbstring/libmbfl/nls/nls_ru.lo ext/mbstring/libmbfl/nls/nls_uni.lo ext/mbstring/libmbfl/nls/nls_zh.lo ext/mbstring/libmbfl/nls/nls_hy.lo ext/mbstring/libmbfl/nls/nls_tr.lo ext/mbstring/libmbfl/nls/nls_ua.lo ext/pdo/pdo.lo ext/pdo/pdo_dbh.lo ext/pdo/pdo_stmt.lo ext/pdo/pdo_sql_parser.lo ext/pdo/pdo_sqlstate.lo ext/pdo_sqlite/pdo_sqlite.lo ext/pdo_sqlite/sqlite_driver.lo ext/pdo_sqlite/sqlite_statement.lo ext/pgsql/pgsql.lo ext/phar/util.lo ext/phar/tar.lo ext/phar/zip.lo ext/phar/stream.lo ext/phar/func_interceptors.lo ext/phar/dirstream.lo ext/phar/phar.lo ext/phar/phar_object.lo ext/phar/phar_path_check.lo ext/posix/posix.lo ext/reflection/php_reflection.lo ext/session/mod_user_class.lo ext/session/session.lo ext/session/mod_files.lo ext/session/mod_mm.lo ext/session/mod_user.lo ext/simplexml/simplexml.lo ext/simplexml/sxe.lo ext/spl/php_spl.lo ext/spl/spl_functions.lo ext/spl/spl_engine.lo ext/spl/spl_iterators.lo ext/spl/spl_array.lo ext/spl/spl_directory.lo ext/spl/spl_exceptions.lo ext/spl/spl_observer.lo ext/spl/spl_dllist.lo ext/spl/spl_heap.lo ext/spl/spl_fixedarray.lo ext/standard/crypt_freesec.lo ext/standard/crypt_blowfish.lo ext/standard/crypt_sha512.lo ext/standard/crypt_sha256.lo ext/standard/php_crypt_r.lo ext/standard/array.lo ext/standard/base64.lo ext/standard/basic_functions.lo ext/standard/browscap.lo ext/standard/crc32.lo ext/standard/crypt.lo ext/standard/cyr_convert.lo ext/standard/datetime.lo ext/standard/dir.lo ext/standard/dl.lo ext/standard/dns.lo ext/standard/exec.lo ext/standard/file.lo ext/standard/filestat.lo ext/standard/flock_compat.lo ext/standard/formatted_print.lo ext/standard/fsock.lo ext/standard/head.lo ext/standard/html.lo ext/standard/image.lo ext/standard/info.lo ext/standard/iptc.lo ext/standard/lcg.lo ext/standard/link.lo ext/standard/mail.lo ext/standard/math.lo ext/standard/md5.lo ext/standard/metaphone.lo ext/standard/microtime.lo ext/standard/pack.lo ext/standard/pageinfo.lo ext/standard/quot_print.lo ext/standard/rand.lo ext/standard/mt_rand.lo ext/standard/soundex.lo ext/standard/string.lo ext/standard/scanf.lo ext/standard/syslog.lo ext/standard/type.lo ext/standard/uniqid.lo ext/standard/url.lo ext/standard/var.lo ext/standard/versioning.lo ext/standard/assert.lo ext/standard/strnatcmp.lo ext/standard/levenshtein.lo ext/standard/incomplete_class.lo ext/standard/url_scanner_ex.lo ext/standard/ftp_fopen_wrapper.lo ext/standard/http_fopen_wrapper.lo ext/standard/php_fopen_wrapper.lo ext/standard/credits.lo ext/standard/css.lo ext/standard/var_unserializer.lo ext/standard/ftok.lo ext/standard/sha1.lo ext/standard/user_filters.lo ext/standard/uuencode.lo ext/standard/filters.lo ext/standard/proc_open.lo ext/standard/streamsfuncs.lo ext/standard/http.lo ext/standard/password.lo ext/standard/random.lo ext/standard/net.lo ext/standard/hrtime.lo ext/tokenizer/tokenizer.lo ext/tokenizer/tokenizer_data.lo ext/xml/xml.lo ext/xml/compat.lo ext/xmlreader/php_xmlreader.lo ext/xmlwriter/php_xmlwriter.lo TSRM/TSRM.lo main/main.lo main/snprintf.lo main/spprintf.lo main/fopen_wrappers.lo main/alloca.lo main/php_scandir.lo main/php_ini.lo main/SAPI.lo main/rfc1867.lo main/php_content_types.lo main/strlcpy.lo main/strlcat.lo main/explicit_bzero.lo main/mergesort.lo main/reentrancy.lo main/php_variables.lo main/php_ticks.lo main/network.lo main/php_open_temporary_file.lo main/output.lo main/getopt.lo main/php_syslog.lo main/streams/streams.lo main/streams/cast.lo main/streams/memory.lo main/streams/filter.lo main/streams/plain_wrapper.lo main/streams/userspace.lo main/streams/transports.lo main/streams/xp_socket.lo main/streams/mmap.lo main/streams/glob_wrapper.lo Zend/zend_language_parser.lo Zend/zend_language_scanner.lo Zend/zend_ini_parser.lo Zend/zend_ini_scanner.lo Zend/zend_alloc.lo Zend/zend_compile.lo Zend/zend_constants.lo Zend/zend_dtrace.lo Zend/zend_execute_API.lo Zend/zend_highlight.lo Zend/zend_llist.lo Zend/zend_vm_opcodes.lo Zend/zend_opcode.lo Zend/zend_operators.lo Zend/zend_ptr_stack.lo Zend/zend_stack.lo Zend/zend_variables.lo Zend/zend.lo Zend/zend_API.lo Zend/zend_extensions.lo Zend/zend_hash.lo Zend/zend_list.lo Zend/zend_builtin_functions.lo Zend/zend_ini.lo Zend/zend_sort.lo Zend/zend_multibyte.lo Zend/zend_ts_hash.lo Zend/zend_stream.lo Zend/zend_iterators.lo Zend/zend_interfaces.lo Zend/zend_exceptions.lo Zend/zend_strtod.lo Zend/zend_gc.lo Zend/zend_closures.lo Zend/zend_weakrefs.lo Zend/zend_float.lo Zend/zend_string.lo Zend/zend_signal.lo Zend/zend_generators.lo Zend/zend_virtual_cwd.lo Zend/zend_ast.lo Zend/zend_objects.lo Zend/zend_object_handlers.lo Zend/zend_objects_API.lo Zend/zend_default_classes.lo Zend/zend_inheritance.lo Zend/zend_smart_str.lo Zend/zend_cpuinfo.lo Zend/zend_execute.lo main/internal_functions_cli.lo sapi/cli/php_cli.lo sapi/cli/php_http_parser.lo sapi/cli/php_cli_server.lo sapi/cli/ps_title.lo sapi/cli/php_cli_process_title.lo \
-lpq -lrt -lrt -lm -ldl -lxml2 -lsqlite3 -lxml2 -lonig -lsqlite3 -lxml2 -lxml2 -lxml2 -lxml2  -o sapi/cli/php

Wenn Sie genau hinschauen, enthält -lpq -lrt -lrt -lm -ldl -lxml2 -lsqlite3 -lxml2 -lonig -lsqlite3 -lxml2 -lxml2 -lxml2 -lxml2 nicht -lssl -lcrypto -Ist da so viel lxml2`?) Lesen Sie die Konfigurationshilfe sorgfältig durch

./configure -h
・
・
Some influential environment variables:
・
・
OPENSSL_LIBS
            linker flags for OPENSSL, overriding pkg-config
・
・

Da dort "Linker Flags for OPENSSL" steht, wird interpretiert, dass das Zeigen auf das LIB-Verzeichnis nicht ausreicht. Wechseln Sie zu "OPENSSL_LIBS =" - L / usr / local / openssl / lib -lssl -lcrypto "und erstellen Sie neu

$ ./configure \
  --with-config-file-path=/etc/php7 \
  --enable-mbstring \
  --with-apxs2=/usr/local/apache2.4/bin/apxs \
  --with-pgsql \
  --with-zlib-dir \
  --disable-ipv6 \
  --with-openssl \
  OPENSSL_CFLAGS=-I/usr/local/openssl/include \
  OPENSSL_LIBS="-L/usr/local/openssl/lib -lssl -lcrypto" \
$ make

Ergebnis ist ...

Dritte Wand

Stoßen Sie auf einen anderen Fehler

ext/pgsql/.libs/pgsql.o: In function `zif_pg_copy_from':
/usr/local/src/php-7.4.12/ext/pgsql/pgsql.c:4319: undefined reference to `ZSTR_LVAL'
//usr/lib64/libk5crypto.so.3: undefined reference to `EVP_KDF_derive@OPENSSL_1_1_1b'
//usr/lib64/libk5crypto.so.3: undefined reference to `EVP_KDF_ctrl@OPENSSL_1_1_1b'
//usr/lib64/libk5crypto.so.3: undefined reference to `EVP_KDF_CTX_new_id@OPENSSL_1_1_1b'
//usr/lib64/libk5crypto.so.3: undefined reference to `EVP_KDF_CTX_free@OPENSSL_1_1_1b'
collect2: error: ld returned 1 exit status
make: *** [Makefile:268: sapi/cli/php] Error 1

libk5crypto.so.3 ist eine in Kerberos enthaltene Bibliothek. Ich habe dem Pfad der gemeinsam genutzten Bibliothek mit LD_LIBRARY_PATH / usr / local / openssl / lib hinzugefügt und Kerberos erstellt und installiert, aber es hat nicht funktioniert. Das Hinzufügen von / usr / local / openssl / lib zu / etc / ld.so.conf oder das Deinstallieren des Bundles OpenSSL sollte für andere kein Problem sein. Am Ende des Tages gab ich es auf, zu versuchen, die gleichen Haupt- und Nebenversionen von OpenSSL mit dem Bundle koexistieren zu lassen, und machte Kompromisse, indem ich OpenSSL des Bundles verwendete, bis OpenSSL 1.2 veröffentlicht wurde.

Starten Sie eine neue GCE-Instanz und versuchen Sie es erneut

Vorinstallierte Pakete

$ sudo dnf install wget perl gcc bzip2 expat-devel pcre-devel openssl-devel libxml2-devel sqlite-devel oniguruma-devel libpq-devel

Erstellen und installieren Sie PHP 7.4

OpenSSL erstellt und installiert PHP ohne Build und Installation

$ wget https://www.php.net/distributions/php-7.4.12.tar.bz2
$ tar xvf php-7.4.12.tar.bz2
$ cd php-7.4.12
$ ./configure \
  --with-config-file-path=/etc/php7 \
  --enable-mbstring \
  --with-apxs2=/usr/local/apache2.4/bin/apxs \
  --with-pgsql \
  --with-zlib-dir \
  --disable-ipv6 \
  --with-openssl \
  OPENSSL_CFLAGS=-I/usr/include/openssl \
  OPENSSL_LIBS="-L/usr/lib64 -lssl -lcrypto"
$ make
$ make test
$ sudo make install
$ php -v
HP 7.4.12 (cli) (built: Nov  4 2020 16:41:02) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Schließlich ist die Erstellung und Installation von PHP 7.4 abgeschlossen

Recommended Posts

Eine Geschichte über die Schwierigkeiten beim Versuch, PHP 7.4 auf CentOS 8 von GCE zu erstellen
Es fiel mir schwer, MariaDB 10.5.5 unter CentOS 8 von Sakura VPS zu installieren
Ich habe versucht, AdoptOpenjdk 11 unter CentOS 7 zu erstellen
Eine Geschichte, die Zeit brauchte, um eine Verbindung herzustellen
Eine Geschichte, der ich mit der automatischen Starteinstellung von Tomcat 8 unter CentOS 8 zweimal verfallen war
Android: Es fiel mir schwer, die HTML-Datei auf der SD-Karte anzuzeigen
Eine Geschichte über das Bemühen, JAR-Dateien zu dekompilieren
[Lösung] Ein Memo, das mir schwer fiel, weil sich das Format der Sinatra-Validierung geändert hat.
Eine Geschichte, nach der ich süchtig war, als ich einen Schlüssel bekam, der automatisch auf MyBatis ausprobiert wurde
Ich habe versucht, eine App zu erstellen, mit der Sie nach Genre posten und chatten können ~ Wo ich es schwer hatte ~
Eine Geschichte, die mir klar wurde, dass ich überhaupt als Ingenieur studieren musste
Eine Geschichte, die ich mit Java nur schwer herausfordern konnte
[Kleine Geschichte] Irreführender Methodenname (eine Geschichte, die aufgrund von setScale Zeit verschwendet hat.
Installieren Sie PHP7.4, um die CentOS7 Laravel-Umgebung zu erstellen
Ich möchte PHP 7.2 unter Ubuntu 20.04 installieren.
So installieren Sie Beta PHP8.0 unter CentOS8
Eine Notiz, die ich aufgegeben habe, um eine benutzerdefinierte Anmerkung für Lombok zu erstellen
Ich habe versucht, CentOS-7 einfach in einen PC zu integrieren, den ich nicht mehr benötige
Die Geschichte, die ich nach der Installation mehrerer Java unter Windows nicht erstellen konnte
Es fiel mir schwer, Java-Multithreading von Grund auf neu zu erstellen. Organisieren Sie es also
Befehl zum Installieren von nginx / PHP7 / php-fpm unter CentOS7
Die Geschichte des Versuchs, JAVA File zu bedienen
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
Beim Versuch, sbt zu installieren, um eine Scala-Entwicklungsumgebung zu erstellen, ist ein Fehler aufgetreten
Memo zum Erstellen einer Servlet-Umgebung auf EC2 von AWS
Eine Geschichte über den Versuch, mit Mockito auszukommen
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
[Docker] Ist es gut genug, um es als mehrstufigen Build zu bezeichnen? → Die Geschichte, die so gut wurde
[Terraform] Docker behebt das Zeitlimit beim Versuch, Azure-Ressourcen auf einem Windows-Computer zu erstellen