Я пытаюсь запустить драйвер PHP PDO MySQL под Leopard и в основном следую идеям от Том Гидден в принудительном запуске Apache как i386 вместо x86_64 по умолчанию Leopard.
По идеям Тома я скопировал
/System/Library/LaunchDaemons/org.apache.httpd.plist
к
/Library/LaunchDaemons/org.apache.httpd.plist
И добавил флаг запуска Apache в 32-битном режиме:
<string>arch</string>
<string>-i386</string>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
Я также подтвердил из Документация Arch что / Library / LaunchDemons следует обрабатывать до / System / Library / LaunchDaemons
Когда я перезагружаю свой Mac и проверяю процесс с помощью монитора активности, процесс httpd помечается как «intel» - это то, что я ожидаю увидеть.
Однако, если я открою Системные настройки-> Совместное использование и перезапущу Apache, сняв и повторно отметив опцию «Общий доступ в Интернет», Apache запустится в 64-битном режиме (как видно в Activity Monitor как процесс «Intel (64-битный)». Это это не то, что я ожидал увидеть!
Итак, мой вопрос:
Почему я вижу, что запуск Apache через системные настройки приводит к другому поведению, чем при перезагрузке?
Следует ли мне удалить / переименовать файл /System/Library/LaunchDaemons/org.apache.httpd.plist или есть способ лучше?
Или я просто делаю что-то совершенно безумным?
Спасибо за вашу помощь.
Кто угодно??
Я считаю, что вы можете проверить параметры, фактически переданные приложению, запустив:
ps auxw | grep http
Я знаю, что когда я возился с сервисами, мне очень нравится использовать Лингон (даже если он больше не разрабатывается.) Это дает хорошее представление о том, какие задачи запланированы, это может помочь проверить, активна ли ваша задача или нет, и я считаю, что он проверит согласованность вашего файла plist (хотя, поскольку вы начали с существующего, это, вероятно, будет хорошо), и это действительно хорошо для редактирования файла launchd plist. Обязательно посмотрите на экспертный режим, особенно при просмотре существующего файла, и обратите внимание, что в меню справки вы можете получить доступ ко всем соответствующим страницам руководства.
Вы можете изменить имя своей службы в файле конфигурации plist. Чтобы проверить, доступен ли он и включен, вы можете сделать следующее:
service --test-if-available org.apache.httpd && echo "Available" || echo "Not available"
service --test-if-configured-on org.apache.httpd && echo "On" || echo "Off"
[но замените 'org.apache.httpd' в команде на то, что вы настроили. Обратите внимание, что вы можете запустить
service --list
чтобы увидеть список всех служб, но, к сожалению, данные не поступают в стандартный вывод, и вы не можете их передать по конвейеру.]
Еще один полезный инструмент, который поможет вам в этом разобраться: launchctl.
Чтобы узнать, какие задачи запланированы, вы можете запустить:
launchctl list
Обратите внимание, что вы получите разные результаты, если сделаете это как пользователь, чем если бы вы сделали это как root. Я считаю, что root видит задачи, запланированные из / System / Library / LaunchDaemons и LaunchAgents, и что пользователь видит задачи, запланированные из / Library / LaunchDaemons и LaunchAgents.
Launchctl также позволит вам планировать / отменять задачи. Обратите внимание, что в файлах конфигурации есть ключ, который указывает, отключено ли задание. Вы можете отредактировать файл или, используя команду launchctl load или unload, вы можете использовать флаг -W, чтобы переопределить текущий параметр и записать его обратно на диск.
На сайте, на который вы ссылались, перечислены команды для отмены планирования исходной задачи и расписания в вашей замене следующим образом:
sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo launchctl load /Library/LaunchDaemons/org.apache.httpd.plist
что выглядит правильно (хотя я не уверен, требуется ли sudo для второго).
Почему apache запускается иначе, чем в системных настройках? У меня две догадки.
Я открыл консоль, переключая переключатель. В system.log ничего не было. В /var/log/apache2/error.log действительно было показано, что приложение было закрыто и запущено, но я не знаю, было ли оно прямым или нет.
Думаю, что бы я сделал:
Если вы хотите делать что-то, выходящее за рамки настройки Apple, и хотите постоянный контроль, рассмотрите возможность использования Macports. Это позволит вам полностью контролировать, какую версию Apache, MySQL, PHP вы используете и т. Д.
Одна из проблем, связанных с использованием набора Apache + PHP от Apple, заключается в том, что они могут и будут обновлять его в Обновлении программного обеспечения без особых предупреждений. И это может привести к поломке вашего стека AMP :(