Проблемы с Apache после обновления до Yosemite

8

Мой веб-сервер Mac не будет работать после обновления до Yosemite. Когда я печатаю 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ничего не происходит, как будто он запущен, и я набираю его снова, он говорит, что он уже запущен. Кроме того, у меня установлена ​​панель предпочтений общего доступа к веб-сайту ( http://clickontyler.com/web-sharing/ ), и когда я переключаю переключатель с «Выкл. На Вкл.», Он все равно говорит, что он выключен, даже если переключатель находится в положении «Вкл.». ,

Какие файлы вы, ребята, хотите / должны увидеть? Действительно нужно исправить это как можно скорее.

Том Окли
источник

Ответы:

6

Также обратите внимание, что установщик 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
Отто Г
источник
Как это отвечает на вопрос? Вам не нужно менять модуль php, который вы загружаете после обновления Apache ...
AlxVallejo
8

Проблема возникает из-за того, что Yosemite устанавливает последнюю версию Apache (2.4), тогда как более ранние версии Mac OS X использовали Apache версии 2.2

Из ошибки видно, что вы не использовали стандартную версию PHP, предоставленную Apple, а другую версию, предоставленную liip.ch. Удаление знака #, как предложено выше Nuttyx, загрузит версию php для Apple (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 )

NB. Если вы используете виртуальные хосты, вам, вероятно, потребуется несколько изменить файлы конфигурации. В частности, вам нужно будет изменить следующее:

2.2 конфигурация:

Order allow,deny
Allow from all

Конфигурация 2.4:

Require all granted
Джон Далтон
источник
4

Кажется , что вы можете исправить это путем удаления# на самого начало следующей строки в /etc/apache2/httpd.confфайле:

LoadModule php5_module libexec/apache2/libphp5.so
NuTTyX
источник
1
Это сделало это для меня!
Матье Риглер,
1

Запуск sudo apachectl без аргументов показывает проблему в файлах conf. В моем случае обновление php исправило это.

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

После этого Apache снова запустился, но мне пришлось перенастроить vhosts.

raoulsson
источник
0

Несмотря на то, что на вышеупомянутый вопрос был дан ответ, существует другая вероятность такой же ошибки, например:

/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

Это может произойти, если вы создали символическую ссылку, на которую ссылается указанное выше имя и она не найдена. Чтобы решить, создайте символьную ссылку, указав абсолютный путь для фактического файла и такой же для имени файла символической ссылки.

Оник
источник