Я ищу помощи, чтобы найти, почему MAMP не может внести изменения в «корень документа» Apache, и решить эту проблему. Эта вторая редакция исходной заявки включает существенную дополнительную информацию, которая может помочь в распознавании решений.
Apache недавно перестал реагировать на изменения в директиве «DocumentRoot» в разделе «основной» конфигурации сервера в Apache httpd.conf. Apache продолжает работать хорошо, за исключением того, что он застрял на одной предыдущей настройке «DocumentRoot». Я был бы признателен за вашу помощь в поиске источника этой проблемы и ее устранении.
Я запускаю Apache 2.0.64 на MacBookPro начала 2011 года с Lion. Для удобства я работаю в MAMP 2.0.5, в который входит Apache 2.0.64. Я разрабатывал несколько веб-сайтов, расположенных в разных каталогах по разным путям. Чтобы переключить локальный хост между этими путями и каталогами, я обычно использовал последовательность действий графического интерфейса MAMP (не MAMP Pro)
'Настройки...' > 'Apache' > 'Корень документа' > 'Выбрать...'
для переключения между двумя путями.
Чуть больше недели назад какой-то параметр или процесс, стоящий за этим переключателем GUI, застрял на одном из путей («путь p» для простоты). Сам графический интерфейс не застрял; он отображает «Корень документа», как если бы он переключался между путем p и путем q. Однако только сайты по пути p будут работать на localhost/path. Если я переключу настройку MAMP для «корня документа» на путь q, а затем попытаюсь запустить локальный сайт q, q не запустится, даже если он работал нормально до того, как проблема впервые возникла; но любой сайт, доступный по пути p, все равно будет работать.
Заглянув за графический интерфейс MAMP, «phpinfo» сообщает, что «DOCUMENT_ROOT» изменен на «путь q» в разделе «Среда Apache» phpinfo, а также в «_SERVER («DOCUMENT_ROOT»)» в разделе «Переменные PHP». Когда я изменяю параметр «Document_Root» MAMP, я могу в режиме реального времени с помощью TextWrangler наблюдать за обновлением параметра в «httpd.conf».
«Монитор активности» Mac показывает семь запущенных процессов «httpd». Использование «Проверить» показывает, что все они работают в MAMP. Поиск httpd.conf в Mac с помощью Spotlight показывает только один файл httpd.conf, о котором говорилось выше.
Соответствующие сообщения об ошибках, доступ к которым осуществляется через MAMP/logs/apache_error.log, всегда (за исключением метки времени):
-- возобновление нормальной работы [22 апреля 2012 г., 12:34:22] [уведомление] обнаружен SIGTERM, завершение работы [22 апреля 2012 г., 12:34:24] [уведомление] Дайджест: создание секрета для дайджест-аутентификации ... [Вс 22 апреля 12:34:24 2012] [уведомление] Дайджест: выполнено [Вс, 22 апреля 12:34:24 2012] [уведомление] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 Настроен PHP/5.3.6 - возобновление нормальной работы
Если я правильно понимаю, работающая версия Apache — 2.2.21, а не Apache 2.0.64, о чем говорится на странице часто задаваемых вопросов MAMP (отображаемой в виде вкладки, доступ к веб-экрану которой открывается с помощью кнопки «Открыть стартовую страницу» в графическом интерфейсе) установленная версия.
Соответствующие сообщения об ошибках в общем журнале ошибок консоли:
21.04.12 21:40:27.746 [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:27 mysqld_safe mysqld из файла pid /Applications/MAMP/tmp/mysql/mysql.pid завершено 21 апреля /12 9:40:28.653 PM [0x0-0xcd0cd].de.appsolute.MAMP: Предупреждение: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] не существует 21.04.12 9 :40:28.721 PM [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:28 mysqld_safe Ведение журнала в '/Applications/MAMP/logs/mysql_error_log.err'. 21.04.12 21:40:28.871 [0x0-0xcd0cd].de.appsolute.MAMP: 120421 21:40:28 mysqld_safe Запуск демона mysqld с базами данных из /Applications/MAMP/db/mysql 21.04.12 9 :40:29.799 PM [0x0-0xcd0cd].de.appsolute.MAMP: Предупреждение: DocumentRoot [/Applications/MAMP/Library/docs/dummy-host2.example.com] не существует
За исключением даты и времени, эти сообщения остаются неизменными для любых изменений через MAMP в «DocumentRoot». Я не могу распознать какую-либо полезную информацию в этих сообщениях.
Незадолго до возникновения этой проблемы я переустановил MAMP, чтобы исправить проблему с сервером MySQL. Пытаясь отладить сервер MySQL в MAMP, я и более опытный программист также установили MacPorts.
Вполне возможно, что MAMP на самом деле открывает версию Apache 2.2.21, которая могла быть установлена MacPorts, а не версию 2.0.64, которая предположительно поставлялась с MAMP 2.0.5; но эта часть MAMP по-прежнему действует так, как будто Apache 2.0.64 является рабочей версией. Если это правда, это может быстро привести к решению, хотя я недостаточно знаю о том, как работают MAMP или Apache, чтобы довести это до конца.
Я долго искал онлайн-советы, протестировал предложение по форматированию WordPress для нескольких пользователей и поиграл с изменением «etc/hosts», которые теперь восстановлены до значений по умолчанию. Большинство соответствующих веб-сайтов жестко запрограммированы на XHTML, PHP и CSS; некоторые используют WordPress.
На следующий день после того, как я опубликовал эту проблему в «Переполнении стека» в качестве вопроса № 10252067, еще не получив ответа, я добавил более раннюю версию этого запроса в ветку форума MAMP о том, что PHP не работает. Этот пост еще не опубликован и, возможно, находится на рассмотрении. Когда я более внимательно изучил проблему, мне кажется, что часть интерфейса MAMP, которая взаимодействует с httpd.conf, может работать должным образом, и что проблема может быть связана либо с тем, как httpd читает и интерпретирует настройки в httpd. conf или как MAMP распознает несколько возможных версий Apache и взаимодействует с ними.
Я был бы признателен за ваше руководство по устранению этой ошибки при реализации параметра Apache «DocumentRoot».