それを理解してください。ポイントは/etc/apache2/httpd.confの言葉からです:
The <IfDefine> blocks segregate server-specific directives
and also directives that only apply when Web Sharing or
server Web Service (as opposed to other services that need Apache) is on.
The launchd plist sets appropriate Define parameters.
MacでのWeb 共有(システム設定 -> Web 共有)のアクションは、本来、最初に起動plist
して適切なDefine
パラメータを設定し、次に を呼び出しますapachectl
。httpd.conf を読むと<IfDefine xxxx>yyyyy</IfDefine>
、plist のパラメータに基づいて、ファイルがいくつかのセクションで構成されていることがわかります。
sudo apachectl start
Linux で通常行うようにターミナルでコマンドを呼び出すと、 [plist からパラメーターを定義] を設定できません。httpd は起動していますが、適切に構成されていません。たとえば、私の場合DocumentRoot
は、パラメータが
<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
DocumentRoot "/Library/WebServer/Documents"
</IfDefine>
</IfDefine>
これが、エラー ログに[error] [client 192.168.1.2] File does not exist: /usr/htdocs
. /usr/htdocs に関しては、どの構成ファイルにも設定されていませんが、Apache でハードコーディングされています。それは探すべき「最終手段」の場所です。
#<IfDefine !MACOSXSERVER>
and#<IfDefine WEBSHARING_ON>
と 2 つをコメントすると、ターミナル#</IfDefine>
で呼び出さsudo apachectl start
れます。その後、すべてがOKです。
最終的にこれを正すのに丸一日かかりました。Linux に慣れていて、特に私のように端末でコマンド ラインを使用し、Mac に移行することを好む人にとって役立つことを願っています。