1
0

More than 1 year has passed since last update.

phpinfo、ソースがそのまま表示されるときの解決備忘録

Posted at

経緯

PHPでファイルアップローダーを実装したい

PHPをインストール、ドキュメントルート下で.htmlにPHPコードを書き込む

日本語の文字化け

解消の手がかりとしてphpinfoを参照すると良いことを知る

<?php phpinfo(); ?>を書き込んだファイルにブラウザでアクセス

<?php phpinfo(); ?>のコードだけが表示される

解決方法

  • libapache2-mod-phpのインストール
  • php8.1を有効化

環境

Ubuntu Server22.04 TLS
Apache/2.4.52
PHP8.1

実践

①libapache2-mod-phpのインストール

PHPだけをインストールするだけでは不十分らしく、モジュールをインストールする

$sudo install php libapache2-mod-php

これで「php.ini」を参照できるようになる(今回は編集しない)

②php8.1を有効化

$sudo a2enmod php8.1

筆者の場合、ここで

Considering dependency mpm_prefork for php8.1:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php8.1, aborting

とエラーが出た

mpm_eventを無効にする必要があるらしいので

sudo a2dismod mpm-event

すると

Module mpm_event disabled.
To activate the new configuration, you need to run:
systemctl restart apache2

とのことなので

$sudo systemctl restart apache2

× apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2023-05-31 13:16:25 UTC; 19s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 2242 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 9ms
May 31 13:16:25 guchibu systemd[1]: Starting The Apache HTTP Server...
May 31 13:16:25 guchibu apachectl[2245]: AH00534: apache2: Configuration error: No MPM loaded.
May 31 13:16:25 guchibu apachectl[2242]: Action 'start' failed.
May 31 13:16:25 guchibu apachectl[2242]: The Apache error log may have more information.
May 31 13:16:25 guchibu systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
May 31 13:16:25 guchibu systemd[1]: apache2.service: Failed with result 'exit-code'.
May 31 13:16:25 guchibu systemd[1]: Failed to start The Apache HTTP Server.

MPMを有効にしないとダメなのか...
ここで少しハマりました

$sudo a2enmod mpm_event

Considering conflict mpm_worker for mpm_event:
Considering conflict mpm_prefork for mpm_event:
ERROR: Module mpm_prefork is enabled - cannot proceed due to conflicts. It needs to be disabled first!

今度はmpm_preforkを無効にする必要があるとのこと

$sudo a2dismod mpm_prefork

ERROR: The following modules depend on mpm_prefork and need to be disabled first: php8.1

php8.1を無効化する必要があるとのこと...
三角関係のように関連しているのか...

$sudo a2dismod php8.1

Module php8.1 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2

エラーは消えた

$sudo systemctl restart apache2

正常に再起動したようだ
しかし、Php8.1は有効にする必要があるのは確定なので

$sudo a2enmod php8.1

Considering dependency mpm_prefork for php8.1:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php8.1:
Enabling module php8.1.
To activate the new configuration, you need to run:
systemctl restart apache2

いろいろ出力されたが、エラーはないようだ

$sudo systemctl restart apache2

正常に再起動できたので、ブラウザでアクセスしてみると...

image.png

表示された
成功である

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0