質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

7611閲覧

Apacheの設定が反映されない

keys

総合スコア215

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/06/14 10:22

Apacheの設定ファイル /etc/httpd/conf にエラーログを吐き出す場所を指定する項目がありますが、下記のようにエラーログを作成して、試しにさ、くらVPSのCentOSでPHPのシンタックスエラーをしてみてもエラーログは /etc/httpd/logsに吐き出されてしまいます。何が原因かアドバイスいただけますでしょうか。

ErrorLog "/var/log/php/error.log"

bash

1 2logs]# ls 3 4access_log access_log-20170605 error_log-201701229 error_log-20170605 index.html.1 5access_log-20170514 access_log-20170611 error_log-20170514 error_log-20170611 6access_log-20170522 error_log error_log-20170522 index.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

手元の環境で確認しました。

  1. CentOS7を新規インストール
  2. yum install -y httpd php
  3. /etc/httpd.confのerrolog出力を「/var/log/php/error.log」に変更
  4. mkdir /var/log/php ; chown apache:apache /var/log/php
  5. service httpd restart

で、/var/log/php/error.logに

[Sat Jun 17 15:04:28.112186 2017] [core:notice] [pid 9842] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0 [Sat Jun 17 15:04:28.112984 2017] [suexec:notice] [pid 9842] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Sat Jun 17 15:04:28.137451 2017] [auth_digest:notice] [pid 9842] AH01757: generating secret for digest authentication ... [Sat Jun 17 15:04:28.138304 2017] [lbmethod_heartbeat:notice] [pid 9842] AH02282: No slotmem from mod_heartmonitor [Sat Jun 17 15:04:28.154936 2017] [mpm_prefork:notice] [pid 9842] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations [Sat Jun 17 15:04:28.154962 2017] [core:notice] [pid 9842] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' error.log (END)

と記録されたのを確認しました。

やはり繰り返しになりますが、conf.d/*.confを変更している可能性が高いですね。

grep -r "ErrorLog" /etc/httpd/ と実行してみて、

/etc/httpd/conf/httpd.conf:# ErrorLog: The location of the error log file. /etc/httpd/conf/httpd.conf:# If you do not specify an ErrorLog directive within a <VirtualHost> /etc/httpd/conf/httpd.conf:ErrorLog "/var/log/php/error.log"

以外の情報が表示されませんか?

投稿2017/06/17 06:21

JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2017/06/18 11:55

こんばんわ、お忙しい中ありがとうございます。 下記の手順で、改めて実行してみたところ、無事エラーログは指定した場所に吐き出されました。 正常に動く状態で ``` #ErrorLog "/etc/httpd/log" ErrorLog "/var/log/php/error.log" ``` シンタックスエラーを確認 ``` # service httpd configtest (2)No such file or directory: AH02291: Cannot access directory '/var/log/php/' for main error log AH00014: Configuration check failed ``` リスタートできない事を確認 ``` # service httpd restart Redirecting to /bin/systemctl restart httpd.service Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details. ``` エラーログを作る ``` # touch error.log # ls error.log # pwd /var/log/php ``` 多分、僕はsakura vpsにrootで入ってたので、そもそもapachにしなくてもよかった?と思いました。今、grep -r "ErrorLog" /etc/httpd/とやってみると下記のように表示されます。 # grep -r "ErrorLog" /etc/httpd/ /etc/httpd/conf/httpd.conf.org:# ErrorLog: The location of the error log file. /etc/httpd/conf/httpd.conf.org:# If you do not specify an ErrorLog directive within a <VirtualHost> /etc/httpd/conf/httpd.conf.org:ErrorLog "logs/error_log" /etc/httpd/conf/httpd.conf:# ErrorLog: The location of the error log file. /etc/httpd/conf/httpd.conf:# If you do not specify an ErrorLog directive within a <VirtualHost> /etc/httpd/conf/httpd.conf:#ErrorLog "/etc/httpd/log" /etc/httpd/conf/httpd.conf:ErrorLog "/var/log/php/error.log" 何はともあれ、ご指摘非常に勉強になりました、付き合っていただき感謝しています、ありがとうございました
guest

0

182c182 < ErrorLog "logs/error_log" --- > ErrorLog "/etc/httpd/logs"

ログを履こうとしているフォルダは、
/var/log/php/error.log
じゃなかったです?

上記の設定は、
/etc/httpd/ にlogs と言うファイルを出力しています。
(確か、所有者がrootなのでapatchユーザーは書き込めなかったと思います)

投稿2017/06/17 01:58

編集2017/06/17 02:01
JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VirtualHostの設定を行っているのではないでしょうか?

httpd.conf内に
ErrorLog "logs/error_log"
と書いていても、

IncludeOptional conf.d/*.conf
と、他設定を読み込んでいるのであれば、そちらの設定が上書きされます。

つまり、/etc/httpd/conf.d/vhost.confとかに

<VirtualHost *:80>
ServerAdmin root
DocumentRoot "/var/www/http"
ServerName www.example.com
ErrorLog "/var/log/php/error.log"
(中略)

と書けば、意図した場所にログファイルが出力されると思います。

投稿2017/06/14 12:40

JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2017/06/14 23:29

アパッチの設定ファイルでは、IncludeOptional conf.d/*.confが記載されておりconf.dというファイルはたしかには/etc/httpdに存在しているのですが、自分の現在のパソコンのローカルにバーチャルなホストを立てた覚えはありません。/etc/httpd/conf.dの下にあるのは次のファイルです。README autoindex.conf php.conf redmine.conf userdir.conf welcome.conf また、上書きされてるってことは、その部分を消せば上書きされないのでは?と思いアパッチの設定ファイルで、そちらの部位をコメントアウトしてみても、やっぱりエラーログは/etc/httpd/logsに吐き出されてしまいました。/etc/httpd/conf.dでの記載がエラーログの場所を反映してるなら、/etc/httpd/conf.d直下の、どれかのファイルに設定を書けばいいんですよね。つまり、どのファイルに設定を書けばいいのか見つければいいということですよね
JunMatsumoto

2017/06/14 23:57

IncludeOptional conf.d/*.conf を #IncludeOptional conf.d/*.conf として、httpdの再起動を行なっても変わらないのですね。 そうなってくると、今の情報のままでは深掘りしたアドバイス出来ないですね。 今のプロセス一覧やApatch のバージョン、httpd.confとかを開示出来るなら、もう少しアドバイス出来るかもしれないです。
keys

2017/06/16 11:05

大変申し訳ありません。httpdの再起動を行なったら変化がありました。下記のようなエラーが発生しました。 Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details. 現在持ち合わせてる情報 ①configファイルにエラーログの場所を指定した②エラーログのアクセス権限(600)と所有者(root -> apache)を変えた。 現状 #IncludeOptional conf.d/*.confとすると、phpが動作しなくなり、phpの記述がそのままhtmlのようにブラウザに出力される。IncludeOptional conf.d/*.confとすると上記のようなエラーが発生するという感じです 現在原因究明中です
JunMatsumoto

2017/06/16 12:43

errorログを貼って頂けませんか? phpの件は、conf.d/php.confを読み込まなくした為、Apatchがphpを解釈出来なくなったからです。 IncludeOptional conf.d/php.conf (php.confは、実際のファイル名にして下さい) として、Apatch を再起動したら元に戻ります。
keys

2017/06/16 22:47

IncludeOptional conf.d/php.confとしても上記のエラーは治りませんでした。ただ、予備のhttpd.confを使用したところ普通に治りましたのでhttpd.confの書き方がおかしいのは確かです。また、ログファイルにはエラーログは出力されません。エラー(httpd.confを使えば治る)の内容に関しては、下記のように出力されています。 # err ログ1 ```bash # systemctl status httpd.service * httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sat 2017-06-17 07:29:34 JST; 13s ago Docs: man:httpd(8) man:apachectl(8) Process: 30631 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE) Process: 30630 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 30630 (code=exited, status=1/FAILURE) Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Starting The Apache... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp httpd[30630]: (21)Is a director... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp httpd[30630]: AH00015: Unable t... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: httpd.service: main... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp kill[30631]: kill: cannot find ... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: httpd.service: cont... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Failed to start The... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Unit httpd.service ... Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: httpd.service failed. Hint: Some lines were ellipsized, use -l to show in full. ``` # errログ2 ```bash # journalctl -xe -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit httpd.service has failed. -- -- The result is failed. Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Unit httpd.service ent Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp systemd[1]: httpd.service failed. Jun 17 07:29:34 tk2-236-27615.vs.sakura.ne.jp polkitd[18635]: Unregistered Authe Jun 17 07:30:01 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Started Session 23551 -- Subject: Unit session-23551.scope has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit session-23551.scope has finished starting up. -- -- The start-up result is done. Jun 17 07:30:01 tk2-236-27615.vs.sakura.ne.jp systemd[1]: Starting Session 23551 -- Subject: Unit session-23551.scope has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit session-23551.scope has begun starting up. Jun 17 07:30:01 tk2-236-27615.vs.sakura.ne.jp CROND[30639]: (root) CMD (/usr/lib ```
keys

2017/06/16 22:58

正しく起動するconfigファイルと上記のようなエラーが出力されるconfigファイルの差分をdiffコマンドで取ってみたら下記のような結果が出ました 差分を揃えてみれば、治りました。errログの出力先がなかったから上記のようなエラーが出ていたと考えられます。なので、エラーログの出力先を帰るという、一応の振り出しには戻れました ```diff # diff httpd.conf httpd.conf.com 182c182 < ErrorLog "logs/error_log" --- > ErrorLog "/etc/httpd/logs" 353c353,355 < IncludeOptional conf.d/*.conf --- > #IncludeOptional conf.d/*.conf > IncludeOptional conf.d/php.conf > LoadModule systemd_module modules/mod_systemd.so
guest

0

以下のような対応でどうでしょうか。

mkdir /var/log/php touch /var/log/php/error.log chcon -t httpd_log_t /var/log/php/error.log chown apache. /var/log/php/error.log chmod 600 /var/log/php/error.log

以下も参考にどうぞ。
CentOS で PHP のエラーログが出力されない

投稿2017/06/14 10:27

bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2017/06/14 23:18

エラーログの主有権をアパッチにして、権限を600にしましたが、効果はありませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問