Dernière fois a construit Apache httpd 2.4.43 sur un serveur Web par compilation source, mais cette fois, en continuant de la fois précédente, l'épine dorsale du serveur d'application Web dans Apache Introduisez PHP 7.4 par compilation source (⑅ • ᴗ • ⑅)
--Programme serveur Web: Apache 2.4.43 + PHP 7.4.6 (compilation source) --Client: Windows10 Pro
--Utilisateur installé en tant que root (dans ma vérification, il s'agit d'un compte administrateur appelé admin, et il est traité par sudo à partir de là)
Les autres packages requis sont installés à l'aide des commandes de package standard de la distribution (dnf, apt, etc.) et n'ont pas besoin d'être téléchargés individuellement.
Pour le téléchargement, vous pouvez accéder au site officiel, le télécharger à partir de là et le transférer par FTP, ou vous pouvez l'obtenir avec wget si vous connaissez l'URL du fichier à télécharger, mais la méthode d'acquisition est omise.
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
Jusqu'à PHP7.3, il était possible d'installer pour gérer des chaînes de caractères multi-octets sans utiliser SQLite et la bibliothèque de voiture de démon, mais en PHP7.4, il est devenu obligatoire pour la compilation des sources.
Pour CentOS 8.1 uniquement, la bibliothèque de voiture démon (oniguruma-devel-6.8.2-1.el8.x86_64.rpm) n'existe pas dans le package par défaut, je l'ai donc apportée à partir de la page de téléchargement du package CentOS.
À partir de juin 2020: http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-1.el8.x86_64.rpm
La compilation prendra environ 40 minutes. Comme il est plus grand qu'Apache, il peut être préférable de faire une pause avec une tasse de café pendant la compilation (\ * ˘︶˘ \ *) ...: \ * ♡
# cd [PHP 7.4.Répertoire où se trouvent 6 fichiers d'archive]
# 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 active PDO
«Make» et «make test» sont des commandes qui prennent du temps. S'il n'y a pas d'erreurs en cours de route, la compilation est terminée. De plus, quand je l'ai testé avec make test sur CentOS 8.1, il n'y avait pas de bugs (๑ ・ ∞ ・ ๑)… Il est peut-être compatible avec CentOS 8.1.
Installez lorsque la compilation est terminée.
# 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/
Certaines des bibliothèques PHP sont placées à plusieurs endroits selon le but, comme "/ usr / local / include / php /" et "/ usr / local / lib / php /". Dans le cas d'OpenSUSE 15.1, certains se trouvent dans "/ usr / local / lib64 / php /". De plus, à ce stade, ** les DLL PHP (bibliothèques de liens dynamiques, qui correspondent à des applications d'extension externes) sont automatiquement déployées dans le dossier Apache **.
Ensuite, faites une copie du fichier de préférences PHP. Tout d'abord, copiez php.ini dans le dossier de la bibliothèque PHP / usr / local / lib /.
# cp php.ini-development /usr/local/lib/php.ini
# ls -l /usr/local/lib
Total 328
-rw-r--r--1 racine racine 144402 24 juin 12:34 libz.a
lrwxrwxrwx 1 racine racine 14 24 juin 12:34 libz.so -> libz.so.1.2.11
lrwxrwxrwx 1 racine racine 14 24 juin 12:34 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x 1 racine racine 113656 24 juin 12:34 libz.so.1.2.11
drwxr-xr-x 4 racine racine 37 24 juin 16:19 php
-rw-r--r--1 racine racine 72278 24 juin 16:21 php.ini
drwxr-xr-x 2 racine racine 21 24 juin 12:34 pkgconfig
Je dois rendre le fichier PHP reconnaissable par Apache, alors modifiez-le. La DLL PHP est automatiquement écrite dans httpd.conf lorsque PHP est installé, il n'est donc pas nécessaire de l'ajouter. Tout ce que vous avez à faire du côté httpd.conf est qu'Apache reconnaisse le type PHP MIME.
# vi /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
…
<IfModule dir_module>
DirectoryIndex index.html ← 「index."Php" ajouté
</IfModule>
…
<IfModule mime_module>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
…
AddType application/x-httpd-php .php ← Ajouter cette ligne
</IfModule>
…
Modifiez le code de caractère PHP et les paramètres de la bibliothèque de référence.
Lorsque PHP est compilé et installé, le répertoire de stockage de php.ini diffère selon la distribution. ** OpenSUSE uniquement, PHP est inclus dans / usr / local / lib64 / **, donc la différence dans le dossier de la bibliothèque "lib" prête à confusion
CentOS8.1. Ubuntu20.04
# vi /usr/local/lib/php.ini
openSUSE15.1
# vi /usr/local/lib64/php.ini
php.ini
#Le contenu étant long, seuls ceux qui ont été partiellement modifiés et ceux qui ont été modifiés sont répertoriés. point-virgule ";"Est retiré. ";Il est décrit avec la ligne que vous venez de supprimer
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
Tout d'abord, créez une page PHP pour confirmation.
# vi /usr/local/apache2/htdocs/phpi.php
phpi.php
<?php phpinfo(); ?>
Pourquoi placer les fichiers PHP dans / usr / local / apache2 / htdocs /? ?? Cependant, lorsqu'Apache est installé par compilation source, le dossier de stockage par défaut pour les données de page Web est "/ usr / local / apache2 / htdocs /". Eh bien, vous pouvez changer l'emplacement de stockage dans httpd.conf, mais cette fois je l'omettrai.
# systemctl stop httpd
# systemctl start httpd
# systemctl status httpd
Si vous ne redémarrez pas, Apache ne fonctionnera pas avec le module PHP chargé, alors arrêtez-le et redémarrez-le. Après cela, assurez-vous qu'il est démarré avec status. PHP a été reconnu correctement! !! (\ * ´꒳` \ *)
Je reconnais correctement l'AOP. Sinon, vous ne pourrez pas utiliser MySQL et SQLite ... (´ • ̥ ̫ • ̥ `)
Introduisez MySQL pour rendre la base de données accessible au serveur d'applications Web de PHP
Recommended Posts