“php:8.0-apache”のDockerコンテナでエラーログが出ないのを調整する

Dockerを使って独習PHP第4版の学習をしていたところ、エラーログが出てこず設定に苦戦したので備忘録として残しておきます。

Dockerで環境構築する際は以下の記事が参考になります(自分はphp8.0のimageを使っていますが)。

Docker(docker-compose) を使って PHP / MySQL 開発環境構築

対処手順

特に指定がない限りコンテナ内に入って実行します。

まずphp.iniのerror_logの出力先が定義されているか確認してください。

php -r 'phpinfo();' | grep log

error_log => no value => no valueなら出力先が定義されていません。php.iniにエラー関係の設定を追記します。

# この辺り記載ないなら追加
error_reporting = "E_ALL"
display_errors = "On"
log_errors = true
error_log = "/var/log/apache2/error_log" # ログ出したい好きな場所

apacheを再起動します。php:8.0-apacheイメージを使っている場合はapachectlではなく、apache2ctlを再起動するようにしてください。自分の環境ではapachectl関係のコマンドで弄っていても反映されなかったです…

apache2ctl restart

“httpd: Could not reliably determine the server’s fully qualified domain name…”というエラーが出る時があります。その時はコンテナ本体をrestartしても大丈夫です。

# コンテナ外で
docker compose restart

phpファイルを作って動作確認します。

vim index.php
<?php
error_log('エラ〜です");

これだけでは/var/log/apache2/error_logにログが出力されませんでした。またdisplay_errorsをonにしているのにも関わらず画面にもエラーが出ないです。

apache側のconfファイルも設定します。

# httpd.conf的なポジションのこれを開く
vim /etc/apache2/apache2.conf 
# 追記する
php_value error_reporting 32767

また先ほどの、”httpd: Could not reliably determine the server’s fully qualified domain name”エラーもついでに対処する場合はServerNameに使用中のlocalhost情報を記載しておくと良いです。

ServerName localhost:8100

apacheを再起動します。

apache2ctl restart

画面にもログにも出ました!

# php.iniで指定したパスのログを参照する
tail /var/log/apache2/error_log 

[18-Nov-2022 19:57:02 Asia/Tokyo] PHP Parse error:  syntax error, unexpected identifier "phpinfo" in /var/www/html/chapter1/index.php on line 17

その他手間取った部分

php:8.0-apacheのイメージのあれこれを記載しておきます。

# コンテナ内、phpそのものの場所
/usr/local/bin/php

# コンテナ内、apache2.conf(httpd.conf)の場所
etc/apache2/apache2.conf
## 再起動(コンテナ内。apachectlだと反映されなかったのでしっかり2を再起動する)
apache2ctl restart

# vimに慣れている人は今だけでもコンテナにvimを入れておくと楽
apt-get update
apt-get install vim

参考

php error_log 吐かれない
事象:php のエラーログが出力されていないphpのエラーが出たのに/var/log/error_logに出力されて無い🥺これじゃ検証できないよー🥺環境 CentOS release 6.9 (Final) x86_64
Apacheのエラー[httpd: Could not reliably determine the server’s fully qualified domain name]を対策する方法
Apacheの起動時や、「apachectl -V」でApacheの状態を確認した際に、「httpd: Could not reliably determine the server's fully qualified domai
お探しのページが見つかりませんでした | 鯖ポタ
お探しのページが見つかりませんでした。

タイトルとURLをコピーしました