Problemy z Apache po aktualizacji do Yosemite


8

Mój serwer Mac nie działa po aktualizacji do Yosemite. Kiedy piszę apachectlw Terminalu, otrzymuję to:

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

Jeśli piszę, sudo apachectl [re]startnic się nie dzieje, tak jakby się zaczęło i piszę ponownie, oznacza to, że już działa. Mam również zainstalowany panel preferencji udostępniania stron internetowych ( http://clickontyler.com/web-sharing/ ), a kiedy przesuwam przełącznik z Wył. Na Wł., Nadal mówi, że jest wyłączony, nawet jeśli przełącznik znajduje się w położeniu Wł. .

Jakie pliki chcielibyście / chcielibyście zobaczyć? Naprawdę trzeba naprawić ten jak najszybciej.

Odpowiedzi:


6

Należy również pamiętać, że instalator Yosemite zastępuje cały plik /private/etc/apache2/httpd.conf nowym domyślnym plikiem konfiguracyjnym Apache 2.4.

Na przykład, jeśli Listenzostaną dodane jakieś dyrektywy, znikną i będą musiały zostać dodane ponownie. Na przykład:

Listen 127.0.0.1:81

Znalazłem moją starą konfigurację w następującym pliku, ale ze względu na różnice w stosunku do wersji 2.2 prawdopodobnie nie należy jej kopiować bezpośrednio przez plik http.conf:

/private/etc/apache2/httpd.conf~previous

Podręcznik aktualizacji znajduje się na stronie: http://httpd.apache.org/docs/2.4/upgrading.html

Upewnij się, że wszystkie wcześniej dołączone dodatkowe pliki konfiguracyjne są nadal dołączone, a następnie przetestuj konfigurację za pomocą polecenia:

sudo apachectl configtest

Jak to odpowiada na pytanie? Nie powinieneś zmieniać modułu php, który ładujesz po aktualizacji Apache ...
AlxVallejo

8

Problem występuje, ponieważ Yosemite instaluje najnowszą wersję Apache (2.4), podczas gdy wcześniejsze wersje Mac OS X używały Apache w wersji 2.2

Z błędu wynika, że ​​nie korzystałeś ze standardowej wersji PHP dostarczonej przez Apple, ale innej wersji dostarczonej przez liip.ch. Usunięcie znaku # zgodnie z sugestią Nuttyx powyżej spowoduje załadowanie wersji php Apple'a (5.5.14). Jeśli chcesz kontynuować uruchamianie wersji dostarczonej przez liip, musisz ją ponownie zainstalować, aby poprawnie załadował się do Apache 2.4. Zobacz szczegółowe wyjaśnienie tutaj: ( http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite.html )

Uwaga: Jeśli korzystasz z hostów wirtualnych, prawdopodobnie będziesz musiał nieco zmienić pliki konfiguracyjne. W szczególności musisz zmienić następujące elementy:

Konfiguracja 2.2:

Order allow,deny
Allow from all

Konfiguracja 2.4:

Require all granted

4

Wydaje się, że problem ten można rozwiązać poprzez usunięcie# na początku działalności następnego wiersza w /etc/apache2/httpd.confpliku:

LoadModule php5_module libexec/apache2/libphp5.so

1
Zrobiło to dla mnie!
Matthieu Riegler

1

Uruchomienie „sudo apachectl” bez argumentów pokazuje problem w plikach conf. W moim przypadku aktualizacja php naprawiła to.

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

Następnie Apache uruchomił się ponownie, ale musiałem ponownie skonfigurować vhosty.


0

Chociaż na powyższe pytanie udzielono odpowiedzi, istnieje inna możliwość wystąpienia tego samego błędu, na przykład:

/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

Może się to zdarzyć, jeśli utworzono dowiązanie symboliczne, do którego odwołuje się powyższa nazwa i nie można go znaleźć. Aby rozwiązać, utwórz dowiązanie symboliczne, podając bezwzględną ścieżkę do rzeczywistego pliku i taką samą dla podanej nazwy pliku dowiązania symbolicznego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.