Yosemiteにアップグレードした後、Mac Webサーバーが機能しなくなります。ターミナルにapachectl
と入力すると、次のようになります。
httpd: Syntax error on line 527 of /private/etc/Apache2/httpd.conf: Syntax error on line 8 of /private/etc/Apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n Referenced from: /usr/local/php5/libphp5.so\n Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so
Sudo apachectl [re]start
何も起こりません。起動してもう一度入力すると、すでに実行されていると表示されます。また、Web共有設定ペインがインストールされています( http://clickontyler.com/web-sharing/ )。スイッチをオフからオンにフリックすると、オフになっていますが、スイッチはオンの位置にあります。
みんなが見たい/見たいファイルは?本当にこれをできるだけ早く修正する必要があります。
Yosemiteインストーラーが/private/etc/Apache2/httpd.confファイル全体を新しいデフォルトのApache 2.4構成ファイルで上書きすることにも注意してください。
たとえば、Listen
ディレクティブが追加された場合、それらは消えてしまい、再度追加する必要があります。例えば。:
Listen 127.0.0.1:81
古い構成を次のファイルで見つけましたが、2.2との違いにより、http.confファイルに直接コピーしないでください。
/private/etc/Apache2/httpd.conf~previous
アップグレードガイドがあります: http://httpd.Apache.org/docs/2.4/upgrading.html
以前に含まれていた追加の構成ファイルがまだ含まれていることを確認してから、次のコマンドで構成をテストします。
Sudo apachectl configtest
この問題は、Yosemiteが最新バージョンのApache(2.4)をインストールするのに対し、以前のバージョンのMac OS XはApacheバージョン2.2を使用したために発生します。
エラーから、PHPが提供する標準バージョンAppleを使用していませんが、liip.chが提供する別のバージョンを使用しているようです。上記のNuttyxで提案されているように署名すると、Apple php(5.5.14)のバージョンがロードされます。liipが提供するバージョンを引き続き実行する場合は、正しくロードされるように再インストールする必要があります。 Apache 2.4。ここで詳細な説明を参照してください:( http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite .html )
N.B.仮想ホストを使用している場合は、おそらく構成ファイルを多少変更する必要があります。特に、以下を変更する必要があります。
2.2構成:
Order allow,deny
Allow from all
2.4構成:
Require all granted
#
ファイルの次の行の先頭で/etc/Apache2/httpd.conf
を削除することでこれを修正できるようです:
LoadModule php5_module libexec/Apache2/libphp5.so
引数なしで「Sudo apachectl」を実行すると、confファイルに問題が表示されます。私の場合、PHPのアップグレードで修正されました。
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6
その後、Apacheが再度実行されましたが、vhostsを再構成する必要がありました。
上記の質問には回答しましたが、次のような同じエラーの別の可能性があります。
/private/etc/Apache2/httpd.conf: Cannot load /usr/libexec/Apache2/mod_XYZ.so into server: dlopen(/usr/libexec/Apache2/mod_XYZ.so, 10): image not found
これは、上記の名前で参照されているシンボリックリンクを作成していて、見つからない場合に発生する可能性があります。解決するには、実際のファイルの絶対パスを提供するシンボリックリンクを作成し、提供されるシンボリックリンクファイル名も同じようにします。