Edited at

Mac OSのApacheでRedmineいれようとしたら[~~~~ fork() was called.]とかいって怒られたときの対処法


大目標

MacOS High Sierraで社内Redmineを立てる


今回のミニマム目標

Apacheのエラーログに出てきた下記エラーコードの解決

objc[1195]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.


解決方法

/System/Library/LaunchDaemons/org.apache.httpd.plist に、

下記の変数を追加

<key>EnvironmentVariables</key>

<dict>
<key>OBJC_DISABLE_INITIALIZE_FORK_SAFETY</key>
<string>YES</string>
</dict>

自分のorg.apache.httpd.plistファイルにはすでに<key>EnvironmentVariables</key>が用意されていたので、内に追加するだけでした。

そのあとは、

sudo apachectl restart

してあげれば、OKです。


経緯

may have been in progress in another thread when fork() was called.をそのままググると

https://qiita.com/ybiquitous/items/b43ffd2389e66a3a1c32

にヒットしました。これ、どこに貼るんだろう?

変数?環境変数かな? ~/.bash_profileかな??

解決されず

うちのHigh Sierra死んでるのかな?と諦めかけたときに

https://github.com/phusion/passenger/issues/1986

この記事をよくよく読み込むと


Set the OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES env var to the apache launchd plist (requires disabling SIP)


なるほど、to the apache launchd plistね。

書き方がわからなかったので、さらに

https://github.com/apache/whimsy/blob/master/MACOSX.md

をチェック。なるほど、こう書くのか。

思い当たる

/System/Library/LaunchDaemons/org.apache.httpd.plist に追記して解決!!

という流れでした。めでたしめでたし。。


おまけ

High Sierra以降で起こるバグのようです。

Mojaveでは解決されているのかな?

10年前にリリースされた化石のようなMacを社内サーバー化したので、真偽は知れず。(Mojaveにアップグレードできない)