macOS MojaveでApacheを起動しようとしたらPermission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pidとなったときの対応方法
事象 : Apacheを起動しようとしたら起動しなくてログを見たらなんか出てた
# 起動した?
$ apachectl start
# 起動していない
$ apachectl stop
httpd (pid 16705?) not running
# 設定間違い?
$ httpd -t
Syntax OK
# logファイルどこだっけ?
$ cat /usr/local/etc/httpd/httpd.conf | grep ErrorLog
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/usr/local/var/log/httpd/error_log"
$ cat /usr/local/var/log/httpd/error_log
[Wed Dec 19 23:53:59.892903 2018] [core:warn] [pid 73462] AH00098: pid file /usr/local/var/run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Dec 19 23:53:59.893658 2018] [core:error] [pid 73462] (13)Permission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pid
[Wed Dec 19 23:53:59.893697 2018] [core:error] [pid 73462] AH00100: httpd: could not log pid to file /usr/local/var/run/httpd/httpd.pid
原因 : 前回起動時の httpd.pid
が残っているが上書きする権限がないから
# 起動した?
$ apachectl start
# 起動していない
$ apachectl stop
httpd (pid 16705?) not running
# 設定間違い?
$ httpd -t
Syntax OK
# logファイルどこだっけ?
$ cat /usr/local/etc/httpd/httpd.conf | grep ErrorLog
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/usr/local/var/log/httpd/error_log"
$ cat /usr/local/var/log/httpd/error_log
[Wed Dec 19 23:53:59.892903 2018] [core:warn] [pid 73462] AH00098: pid file /usr/local/var/run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Dec 19 23:53:59.893658 2018] [core:error] [pid 73462] (13)Permission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pid
[Wed Dec 19 23:53:59.893697 2018] [core:error] [pid 73462] AH00100: httpd: could not log pid to file /usr/local/var/run/httpd/httpd.pid
httpd.pid
が残っているが上書きする権限がないから
httpd.pidってなんだろう?
PIDは、waitpid()やkill()、あるいはsigsend()といったシステムコールの引数であり、ある特定のプロセスに対して何らかの処理を要求する場合、そのプロセスの特定のために使われる。
但し、あるプロセスから特定の他のプロセスのPIDを得る方法はなく、このためプロセスは、必要に応じてプロセスIDを書いたファイルを用意する。例えば、syslogdなら「/var/run/syslogd.pid」、httpdなら「/var/run/httpd.pid」、といった具合である。なお、このパス名は環境依存であり、OSによっては異なる場所に置かれる場合がある。
プロセスID ‐ 通信用語の基礎知識
$ ls -l /usr/local/var/run/httpd
total 8
-rw-r--r-- 1 root admin 6 12 10 23:53 httpd.pid
対応 : httpd.pid
を削除する
今回は削除します。様子を見てよく発生するようであれば httpd.pid
のあるディレクトリの権限変更を検討します。
$ sudo rm /usr/local/var/run/httpd/httpd.pid
Password:
$ ls -l /usr/local/var/run/httpd
$ apachectl start
$ apachectl stop
$ cat /usr/local/var/log/httpd/error_log | grep Dec\ 20
[Thu Dec 20 21:11:09.377340 2018] [mpm_prefork:notice] [pid 74369] AH00163: Apache/2.4.37 (Unix) configured -- resuming normal operations
[Thu Dec 20 21:11:09.377765 2018] [core:notice] [pid 74369] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'
[Thu Dec 20 21:11:26.251257 2018] [mpm_prefork:notice] [pid 74369] AH00169: caught SIGTERM, shutting down
Author And Source
この問題について(macOS MojaveでApacheを起動しようとしたらPermission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pidとなったときの対応方法), 我々は、より多くの情報をここで見つけました https://qiita.com/ponsuke0531/items/1aa1f9d14393dd8a3b34著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .