1

Когда я пытаюсь запустить Apache с панели управления XAMPP (Mac OS X 10.6.8 Snow Leopard), я получаю следующее сообщение об ошибке, и Apache не запускается:

/Applications/XAMPP/xamppfiles/bin/apachectl: line 70: ulimit: open files: cannot modify limit: Invalid argument
(48)Address already in use: make_sock: could not bind to address [::]:80

XAMPP работал отлично на 10 минут раньше. Я остановил Apache, чтобы добавить некоторые файлы .conf и он перестал работать при перезагрузке. Я удалил все новые файлы .conf (т.е. вернул его к тому, что было раньше), но теперь я получаю сообщение выше.

Я проверил AppMonitor и вижу процессы httpd (один из которых _www внутри root). Просто попытался выйти из них, но они автоматически перезапускаются на новых идентификаторах процесса, и это не решило проблему.

И я попробовал полную перезагрузку, и я все еще получаю ту же ошибку (перед запуском любых приложений). Буду признателен, если у кого-то есть идея, как это решить.

3 ответа3

0

Он жалуется на то, что порт 80 уже используется. В подобных сценариях это обычно вызывается тем, что Apache уже (или все еще) работает.

Как вы уже заметили, процесс httpd все еще работает. Обязательно сначала закройте все процессы Apache HTTPD, а затем запустите его снова.

0

Это отключит httpd.

sudo launchctl unload -w /System/Library/LaunchDaemon/org.apache.httpd.plist
0

Есть две вещи, которые могут быть причиной проблемы: активная встроенная в Apple служба совместного использования веб-сайтов или все еще активные процессы зомби XAMPP.

Если это вызвано совместным использованием веб-страниц Apple, вы можете справиться со всем этим, перейдя в « System Preferences… и выбрав « Sharing . Оказавшись там, снимите флажок Web Sharing который в основном просто Apache httpd - и ваша проблема должна быть решена.

Тем не менее, если это в основном «зомби» экземпляр Apache, запущенный после некоторых настроек XAMPP, лучше всего сделать что-то вроде следующего:

Сначала запустите lsof (список открытых файлов), в котором перечислены все файлы, активно открытые в системе.

sudo lsof | grep MAMP | grep apache

Обратите внимание на две команды grep конвейеру? Что я делаю, так это получаю список открытых файлов, затем фильтрую те, у которых путь к файлу подключен к MAMP - или, в вашем случае, меняем его на XAMPP или любую папку / каталог, в котором он запущен - и я фильтрую apache в пути. Список должен выглядеть примерно так:

httpd     2204            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2211            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2212            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2213            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2214            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2215            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2216            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log

Хорошо, это целый список процессов. Apache использует концепцию наличия одного родительского процесса с множеством дочерних процессов, порожденных для обработки трафика. Поэтому, если вы убьете дочерний процесс, родительский процесс заметит его и возродит нового дочернего процесса.

Теперь, посмотрев на этот список, обычно наименьшее число в этом списке процессов будет родительским (поскольку он запускается раньше, чем другой дочерний процесс, разумеется), поэтому вы должны убить его, чтобы уничтожить все процессы. Так что в этом случае процесс с наименьшим номером в списке - 2204 , поэтому просто запустите эту команду:

kill 2204

И тогда родительский процесс уничтожается, и все дочерние процессы также должны удаляться. Тогда порт 80 должен быть снова доступен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .