php8へバージョンアップしたときに、XAMPP for Windows Apacheでエラー出たときの対処方法

Laravel 9を使用したかったので、php8にバージョンアップすることにした。
windowsにて、php7.4からphp8系へバージョンアップをし、Apacheを起動した際にでエラーが出て起動できなかったので、エラーの解決方法などを記録します。

# 環境
* Windows10 home
* php　8.1.1
* Apache　2.4.52
* XAMPP for Windows 7.4.27→XAMPP for Windows 8.1.1

# XAMPPでApacheを起動
下記の画像のように``Error: Apache shutdown unexpectedly.``とエラー表示が出現し、起動できなくなった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727339/c5c997f5-34d3-9008-2877-df0d1831a96d.png)

 

# httpd-xampp.confを編集
xampp\apache\conf\extra\httpd-xampp.confの中身は、下記のとおりです。
```
#
# XAMPP settings
#

<IfModule env_module>
    SetEnv MIBDIRS "/xampp/php/extras/mibs"
    SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
    SetEnv OPENSSL_CONF "/xampp/apache/bin/openssl.cnf"
    SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
    SetEnv PHPRC "\\xampp\\php"
    SetEnv TMP "\\xampp\\tmp"
</IfModule>

#
# PHP-Module setup
#
LoadFile "/xampp/php/php7ts.dll"
LoadFile "/xampp/php/libpq.dll"
LoadFile "/xampp/php/libsqlite3.dll"
LoadModule php_module "/xampp/php/php7apache2_4.dll"　→ ここの変更が必要

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

#
# PHP-CGI setup
#
#<FilesMatch "\.php$">
#    SetHandler application/x-httpd-php-cgi
#</FilesMatch>
#<IfModule actions_module>
#    Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
#</IfModule>

<IfModule php_module>
    PHPINIDir "/xampp/php"
</IfModule>

<IfModule mime_module>
    AddType text/html .php .phps
</IfModule>

ScriptAlias /php-cgi/ "/xampp/php/"
<Directory "/xampp/php">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
          Require all granted
    </Files>
</Directory>

<Directory "/xampp/cgi-bin">
    <FilesMatch "\.php$">
        SetHandler cgi-script
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler None
    </FilesMatch>
</Directory>

<Directory "/xampp/htdocs/xampp">
    <IfModule php_module>
        <Files "status.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
</Directory>

<IfModule alias_module>
    Alias /licenses "/xampp/licenses/"
    <Directory "/xampp/licenses">
        Options +Indexes
        <IfModule autoindex_color_module>
            DirectoryIndexTextColor  "#000000"
            DirectoryIndexBGColor "#f8e8a0"
            DirectoryIndexLinkColor "#bb3902"
            DirectoryIndexVLinkColor "#bb3902"
            DirectoryIndexALinkColor "#bb3902"
        </IfModule>
        Require local
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
   </Directory>

    Alias /phpmyadmin "/xampp/phpMyAdmin/"
    <Directory "/xampp/phpMyAdmin">
        AllowOverride AuthConfig
        Require local
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </Directory>

    Alias /webalizer "/xampp/webalizer/"
    <Directory "/xampp/webalizer">
        <IfModule php_module>
            <Files "webalizer.php">
                php_admin_flag safe_mode off
            </Files>
        </IfModule>
        AllowOverride AuthConfig
        Require local
        ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
    </Directory>
</IfModule>
```

httpd-xampp.confファイルの20行目あたりの
```
LoadModule php_module "/xampp/php/php7apache2_4.dll"
```
この一文が**php7になっている**せいで、Apacheが起動しなかったらしいので、
下記のように書き換えます。
```
LoadModule php_module "C:/xampp/php/php8apache2_4.dll"
```
すると下記のように、起動することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727339/471016ee-7c56-6460-26ce-bfb8c3f3c1a9.png)


# おまけ
書き換えるのは怖いと思うので、
下記のように、バックアップとして残しておくことをお勧めします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727339/08bdb42b-3aa3-fe7b-766b-a107a96b2bb3.png)