大目標
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にアップグレードできない)