Я не могу заставить XAMPP запускаться, когда OS X загружается. Я исследовал это в течение некоторого времени, но без удачи. XAMPP должен быть запущен как корень, и я не хочу хранить пароль для корня в сценарии где-нибудь и использовать "объекты входа в систему" области приставки учетных записей для запуска xampp. Да, это будет работать, но это не правильный путь.
Я пытаюсь запустить его с помощью launchd / пользовательские демоны / LaunchDaemons. Это включает создание plist файла в "/Library/LaunchDaemons" каталог.
Я создал названный файл xampp.startapache.plist
и вставленный это:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>Label</key> <string>xampp.startapache</string> <key>ProgramArguments</key> <array> <string>/Applications/XAMPP/xamppfiles/xampp</string> <string>startapache</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Applications/XAMPP/xamppfiles</string> </dict> </plist>
Это было обрисовано в общих чертах здесь, а также на нескольких других подобных страницах справки. Я попытался редактировать файлы вручную, и я также попытался использовать Lingon. Но это просто dosen't работа! Я даже попытался делать подобную запись для файла сценария, расположенного в том же каталоге, который повторил бы время к файлу журнала. Файл журнала является просто пробелом - как сценарий, не выполняется.
Как я могу сделать эту работу?
Вот то, что закончило тем, что работало на меня:
Создайте эти два файла:
/Library/LaunchDaemons/xampp.sql.startapache.plist /Library/LaunchDaemons/xampp.startapache.plist
В первом добавьте этот код:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>Label</key> <string>xampp.startapache.mysql</string> <key>ProgramArguments</key> <array> <string>/Applications/XAMPP/xamppfiles/xampp</string> <string>startmysql</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Applications/XAMPP/xamppfiles</string> <key>KeepAlive</key> <false/> <key>AbandonProcessGroup</key> <true/> </dict> </plist>
Во втором добавляют этот код:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>Label</key> <string>xampp.startapache</string> <key>ProgramArguments</key> <array> <string>/Applications/XAMPP/xamppfiles/xampp</string> <string>startapache</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Applications/XAMPP/xamppfiles</string> <key>KeepAlive</key> <false/> <key>AbandonProcessGroup</key> <true/> </dict> </plist>
Я должен был иметь два, потому что, когда у меня не было sql один конкретно, mysql не запускался, но апач был. Это может быть то, потому что мне включили SSL или что-то странное как этот. Во всяком случае, решая их обоих проблема для меня, и я действительно использовал Console.app для проверки на сообщения об ошибках, когда стартовый апач - который был полезен, также.
Я подозреваю, что Вы сталкиваетесь с ожиданиями launchd программ, которые это запускает. Это, прежде всего, не предназначается для вещей, которые должны просто быть выполнены, это для вещей, которые должны быть выполнены и поддержаны - итак, когда xampp startapache
концы, launchd говорит себе "OMG, из которого он вышел, я должен очистить оставление и запустить новый экземпляр"... Я не протестировал это с xampp, но я подозреваю, что, добавляя ключи к .plist, чтобы сказать он не перезапускать (KeepAlive=false) и не очищать порожденные подпроцессы (AbandonProcessGroup=true) добьется цели:
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>