Ubuntu18.04にPHP8.2.11をインストールする

本来18.04はサポートが切れているので使わない方がよいのだろうけれど、OSをアップグレードして現在動いているサービスが壊れるのが怖い。

 

sudo apt -y install libtiff-dev libxml2-dev libxpm-dev libsqlite3-dev libcurl4-openssl-dev curl libssl-dev autoconf libpq-dev libxslt1-dev libperl-dev apache2-dev libonig-dev libzip-dev libxml2-dev libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libpng-dev libonig-dev libpq-dev libxslt-dev libzip-dev libgd-dev libtool-bin

wget https://www.php.net/distributions/php-8.2.11.tar.gz
tar zxvf php-8.2.11.tar.gz
cd php-8.2.11/

./configure --with-apxs2  --with-curl --with-openssl --enable-soap --with-mysqli --with-pgsql --with-ldap --enable-intl --with-xsl --with-zlib  --enable-zts  --enable-mbstring --with-zip --enable-gd
make && make test

 

Tests failedが0であることを確認して

sudo make install

 

.bashrcや.profileに

export PATH=$PATH:/usr/local/bin

を追加した方がよい場合も

 

途中でエラーが出るようになったので、

make clean

autoconf -f

を実行した上で./configureからmakeしたらうまくいった。

しかし、make installでmods-availableにインストールされるのは

php.load

のみで、この状態で

sudo a2enmod

を実行してもPHPファイルが実行ファイルとして認識されない。

そのため、aptでインストールした場合のconfファイルからコピーした

 

# Using (?:pattern) instead of (pattern) is a small optimization that
# avoid capturing the matching pattern (as $1) which isn't used here
<FilesMatch ".+\.ph(?:ar|p|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(?:ar|p|ps|tml)$">
    Require all denied
</FilesMatch>
 
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>
 

php.confとして保存してから

sudo a2enmod

sudo service apache2 restart