Я надеюсь, что кто-то здесь может мне помочь.
Я обновил 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.
Теперь ничего не работает.
Я полностью потерян, и мне нужно, чтобы все снова заработало.
Итак, я нашел виновника.
Удивительно, что ни в консоли, ни в журналах ошибок не было видно ни одного сообщения об ошибке, но я нашел сайт, который мне очень помог.
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 решило проблему.