Проблемы с apache после обновления php и mysql с помощью homebrew

Я надеюсь, что кто-то здесь может мне помочь.

Я обновил php и связанные с ним файлы, используя brew upgradeсвой Mac, на котором работает Mac OS X 10.8.3. Раньше все работало нормально, и я просто хотел обновить.

Убедившись, что с конфигурационными файлами и виртуальными хостами все в порядке, я ввел следующую команду для перезапуска apache:

sudo apachectl restart

Затем я попытался подключиться кhttp://localhost/phpinfo.php

Safari выдал ошибку:

Safari can’t open the page “http://localhost/phpinfo.php” because Safari can’t connect to the server “localhost”.

в терминале, выполнив следующую команду:

apachectl -V | grep httpd.conf

приводит к:

-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

Корень сервера это:

ServerRoot "/usr"

и корень документа:

DocumentRoot "/Volumes/sites"

DocumentRoot имеет разрешения, установленные на 755

Как я уже сказал, все работало нормально, пока я не перезапустил apache.

Теперь ничего не работает.

Я полностью потерян, и мне нужно, чтобы все снова заработало.

Ответы (1)

Итак, я нашел виновника.

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

http://blog.joshdick.net/2012/07/28/troubleshooting_apache_in_os_x_10.8_mountain_lion.html

В этом посте автор Джош предложил перезапустить apache с помощью следующей команды:

sudo bash -x /usr/sbin/apachectl -k start

Эта команда предоставляет некоторую информацию об ошибках и преодолевает раздражающее тихое завершение Apache.

Когда я ввел команду, она дала мне следующий вывод:

$ sudo bash -x /usr/sbin/apachectl -k start
+ ARGV='-k start'
+ HTTPD=/usr/sbin/httpd
+ test -f /usr/sbin/envvars
+ . /usr/sbin/envvars
++ DYLD_LIBRARY_PATH=/usr/lib:
++ export DYLD_LIBRARY_PATH
+ LYNX='lynx -dump'
+ STATUSURL=http://localhost:80/server-status
+ ULIMIT_MAX_FILES=
+ LAUNCHCTL=/bin/launchctl
+ LAUNCHD_JOB=/System/Library/LaunchDaemons/org.apache.httpd.plist
+ '[' x '!=' x ']'
+ ERROR=0
+ '[' 'x-k start' = x ']'
+ case $ARGV in
+ /usr/sbin/httpd -k start
httpd: Syntax error on line 118 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/Cellar/php54/5.4.11/libexec/apache2/libphp5.so into server: dlopen(/usr/local/Cellar/php54/5.4.11/libexec/apache2/libphp5.so, 10): Library not loaded: /usr/local/opt/zlib/lib/libz.so.1.2.7\n  Referenced from: /usr/local/Cellar/php54/5.4.11/libexec/apache2/libphp5.so\n  Reason: image not found
+ ERROR=1
+ exit 1

В конце этого фрагмента вы можете увидеть, что он пытается и не может загрузить /usr/local/Cellar/php54/5.4.11/libexec/apache2/libphp5.so.

Что ж, когда я обновил свои доморощенные установки, php5 был обновлен до 5.4.15, поэтому этот путь больше недействителен. (На самом деле путь был действительным, так как php теперь был 5.4.15, а путь указывал на более старую библиотеку 5.4.11, apache завершал работу.

Изменение этой строки в https.conf решило проблему.