Letztes Mal hat Apache httpd 2.4.43 durch Quellkompilierung auf einem Webserver erstellt, diesmal jedoch das Backbone des Web-App-Servers in Apache Führen Sie PHP 7.4 durch Quellenkompilierung ein (⑅ • ᴗ • ⑅)
--Web Server Programm: Apache 2.4.43 + PHP 7.4.6 (Quellenkompilierung) --Client: Windows10 Pro
--Benutzer als root installiert (bei meiner Überprüfung handelt es sich um ein Administratorkonto namens admin, das von sudo von dort aus verarbeitet wird)
Andere erforderliche Pakete werden mit den Standardpaketbefehlen der Distribution (dnf, apt usw.) installiert und müssen nicht einzeln heruntergeladen werden.
Zum Herunterladen können Sie auf die offizielle Website zugreifen, von dort herunterladen und per FTP übertragen oder mit wget abrufen, wenn Sie die URL der Download-Datei kennen, die Erfassungsmethode jedoch weggelassen wurde.
CentOS8.1
# dnf -y install libxml2 libxml2-devel sqlite-devel
# dnf -y install oniguruma-devel-6.8.2-1.el8.x86_64.rpm
openSUSE15.1
# zypper -n install libxml2-tools libxml2-devel sqlite3-devel oniguruma-devel
Bis zu PHP7.3 war es möglich, Multi-Byte-Zeichenfolgen ohne Verwendung von SQLite und der Demon-Car-Bibliothek zu installieren. In PHP7.4 wurde dies jedoch für die Quellkompilierung obligatorisch.
Nur für CentOS 8.1 ist die Dämonenautobibliothek (oniguruma-devel-6.8.2-1.el8.x86_64.rpm) im Standardpaket nicht vorhanden, daher habe ich sie von der CentOS-Paket-Downloadseite mitgebracht.
Stand Juni 2020: http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-1.el8.x86_64.rpm
Das Kompilieren dauert ca. 40 Minuten. Da es größer als Apache ist, ist es möglicherweise besser, während der Kompilierung eine Pause mit einer Tasse Kaffee einzulegen (\ * ˘︶˘ \ *) ...: \ * ♡
# cd [PHP 7.4.Verzeichnis, in dem sich 6 Archivdateien befinden]
# tar xvzf php-7.4.6.tar.gz
# cd php-7.4.6/
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli --with-pdo-mysql --enable-mbregex --enable-mbstring
# make
# make test
--MySQL aktiviert PDO
"Make" und "make test" sind zeitaufwändige Befehle. Wenn unterwegs keine Fehler vorliegen, ist die Kompilierung abgeschlossen. Als ich es mit make test unter CentOS 8.1 getestet habe, gab es außerdem keine Fehler (๑ ・ ∞ ∞ ๑)… Es ist möglicherweise mit CentOS 8.1 kompatibel.
Installieren Sie, wenn die Kompilierung abgeschlossen ist.
# make install
Installing PHP SAPI module: apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/opt/apr-1.7.0/build-1/libtool' libphp7.la /usr/local/apache2/modules
/opt/apr-1.7.0/build-1/libtool --mode=install install libphp7.la /usr/local/apache2/modules/
libtool: install: install .libs/libphp7.so /usr/local/apache2/modules/libphp7.so
libtool: install: install .libs/libphp7.lai /usr/local/apache2/modules/libphp7.la
libtool: warning: remember to run 'libtool --finish /home/admin/php-7.4.6/libs'
chmod 755 /usr/local/apache2/modules/libphp7.so
[activating module `php7' in /usr/local/apache2/conf/httpd.conf]
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-zts-20190902/
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/php/man/man1/
Installing phpdbg binary: /usr/local/bin/
Installing phpdbg man page: /usr/local/php/man/man1/
Installing PHP CGI binary: /usr/local/bin/
Installing PHP CGI man page: /usr/local/php/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php/man/man1/
page: phpize.1
page: php-config.1
/home/admin/php-7.4.6/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f phar.phar /usr/local/bin/phar
Installing PDO headers: /usr/local/include/php/ext/pdo/
Einige der PHP-Bibliotheken befinden sich je nach Zweck an mehreren Orten, z. B. "/ usr / local / include / php /" und "/ usr / local / lib / php /". Im Fall von openSUSE 15.1 befinden sich einige in "/ usr / local / lib64 / php /". Zu diesem Zeitpunkt werden ** PHP-DLLs (Dynamic Link Libraries, die externen Erweiterungsanwendungen entsprechen) automatisch im Apache-Ordner bereitgestellt **.
Erstellen Sie als Nächstes eine Kopie der PHP-Einstellungsdatei. Kopieren Sie zunächst die Datei php.ini in den Ordner / usr / local / lib / der PHP-Bibliothek.
# cp php.ini-development /usr/local/lib/php.ini
# ls -l /usr/local/lib
Insgesamt 328
-rw-r--r--1 Wurzel Wurzel 144402 24. Juni 12:34 libz.a
lrwxrwxrwx 1 Wurzel Wurzel 14 Juni 24 12:34 libz.so -> libz.so.1.2.11
lrwxrwxrwx 1 Wurzel Wurzel 14 Juni 24 12:34 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x 1 Wurzel Wurzel 113656 24. Juni 12:34 libz.so.1.2.11
drwxr-xr-x 4 Wurzel Wurzel 37 24. Juni 16:19 php
-rw-r--r--1 Wurzel Wurzel 72278 24. Juni 16:21 php.ini
drwxr-xr-x 2 Wurzel Wurzel 21 Juni 24 12:34 pkgconfig
Ich muss die PHP-Datei für Apache erkennbar machen, also bearbeite sie. Die PHP-DLL wird bei der Installation von PHP automatisch in httpd.conf geschrieben, sodass sie nicht hinzugefügt werden muss. Alles, was Sie auf der Seite httpd.conf tun müssen, ist, dass Apache den PHP-MIME-Typ erkennt.
# vi /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
…
<IfModule dir_module>
DirectoryIndex index.html ← 「index.Fügen Sie "php" hinzu
</IfModule>
…
<IfModule mime_module>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
…
AddType application/x-httpd-php .php ← Diese Zeile hinzufügen
</IfModule>
…
Ändern Sie die Einstellungen für den PHP-Zeichencode und die Referenzbibliothek.
Wenn PHP kompiliert und installiert wird, unterscheidet sich das Speicherverzeichnis von php.ini je nach Distribution. ** Nur OpenSUSE, PHP ist in / usr / local / lib64 / ** enthalten, daher ist der Unterschied im Bibliotheksordner "lib" verwirrend
CentOS8.1. Ubuntu20.04
# vi /usr/local/lib/php.ini
openSUSE15.1
# vi /usr/local/lib64/php.ini
php.ini
#Da der Inhalt lang ist, werden nur diejenigen aufgelistet, die teilweise geändert wurden, und diejenigen, die geändert wurden. Semikolon";"Ist entfernt. "";Es wird beschrieben, einschließlich der Zeile, die Sie gerade entfernen
output_buffering = On
default_charset = "UTF-8"
[CentOS 8.1. Ubuntu 20.04] include_path = ".:/usr/local/include/php:/usr/local/lib/php"
[openSUSE 15.1] include_path = ".:/usr/local/include/php:/usr/local/lib64/php"
extension_dir = "/usr/local/include/php/ext"
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8, SJIS, EUC-JP, JIS, ASCII
mbstring.substitute_character = none
Erstellen Sie zunächst eine PHP-Seite zur Bestätigung.
# vi /usr/local/apache2/htdocs/phpi.php
phpi.php
<?php phpinfo(); ?>
Warum PHP-Dateien in / usr / local / apache2 / htdocs / ablegen? ?? Wenn Apache jedoch durch Quellkompilierung installiert wird, lautet der Standardspeicherordner für Webseitendaten "/ usr / local / apache2 / htdocs /". Nun, Sie können den Speicherort in httpd.conf ändern, aber dieses Mal werde ich ihn weglassen.
# systemctl stop httpd
# systemctl start httpd
# systemctl status httpd
Wenn Sie nicht neu starten, funktioniert Apache nicht mit dem geladenen PHP-Modul. Beenden Sie es also und starten Sie es neu. Stellen Sie danach sicher, dass es mit dem Status gestartet wird. PHP wurde richtig erkannt! !! (\ * ´꒳` \ *)
Ich kann PDO richtig erkennen. Andernfalls können Sie MySQL und SQLite nicht verwenden ... (´ • ̥ ̫ • ̥ `)
Führen Sie MySQL ein, um die Datenbank für den Web-App-Server von PHP verfügbar zu machen
Recommended Posts