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.

Tom Oakley
źródło

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
Otto G.
źródło
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
John Dalton
źródło
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
NuTTyX
źródło
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.

raoulsson
źródło
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.

Onik
źródło