Saya memiliki masalah di mana Apache tidak akan memulai setelah memperbarui ke High Sierra 10.13.1. Tidak ada yang ditampilkan di log kesalahan, tetapi ketika saya mencoba untuk apachectl start
tidak terjadi apa - apa. Jika saya menjalankan apachectl configtest
saya menerima "Sintaks OK
Saya telah menggunakan perintah seperti sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
tidak berhasil. Apache tidak akan mulai. Saya bisa berlari sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
dan itu juga tidak berhasil.
Saya melihat daftar layanan pembuatan dan httpd muncul dalam daftar bersama dengan proses lain (mysql) tetapi status httpd menunjukkan kuning "mulai" bukan yang hijau.
Saya telah mencoba banyak hal berbeda, dan apa yang saya temukan adalah bahwa jika saya melihat ke file system.log saya temukan com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Jika saya menjalankan apachectl start, perintah itu tampaknya berfungsi, tetapi ketika saya menjalankan perintah stop saya mendapatkan "httpd (tidak ada file pid) tidak berjalan.
Saya juga menerima output dari com.; Apple.xpc.launchd [1] ( org.apache.httpd): Silakan beralih dari OnDemand ke KeepAlive.
Apakah ada sesuatu dengan High Sierra yang mencegah Apache berjalan ketika berjalan baik di Sierra?
sumber
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
layanan minuman` dan mereka semua menunjukkan indikator yang sama. Adapun panduan pengaturan, Ansible digunakan untuk mengatur apache. Ini telah dilakukan pada 5 MacBook lain, mereka masih menjalankan Sierra. MacBook yang satu ini memiliki masalah dan Apple menjalankan diagnostik dan mereset OS, sambil memperbarui OS ke High Sierraapachectl start
). Sama dengan... configtest
!httpd
formula Homebrew , dan sekarang apache tidak merespons. Ketika saya melakukannyabrew services list
, saya juga mendapatkanstarted
untuk httpd dengan warna kuning, dan ketika saya menjalankansudo apachectl stop
, itu memberitahu saya bahwahttpd (pid 87?) not responding.
Jawaban:
Menurut pendapat saya, Anda menyembunyikan berbagai daemon peluncuran httpd / mekanisme start dengan mengeksekusi terlalu banyak perintah terkait httpd.
Dengan homebrew dan homebrew's apache-httpd diinstal dan PATH default Anda memiliki enam cara untuk memulai httpd.
Apache Apple:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo /usr/sbin/apachectl start
Apache Homebrew:
sudo apachectl start
apachectl start
sudo brew services start httpd
brew services start httpd
Jika Anda telah menyalin file homebrew.mxcl.httpd.plist secara manual ke ~ / Library / LaunchAgents / atau / Library / LaunchDaemons / Anda memiliki dua opsi lagi untuk memulainya dengan memuatnya
(sudo) launchctl load ...
.Jika Anda tidak memodifikasi file konfigurasi httpd atau skrip apachectl, cabang Apple akan menggunakan file httpd.conf Apple di / var dan DocumentRoot di folder / Library.
Cabang homebrew menggunakan subfolder di / usr / local /.
Beberapa metode peluncuran tidak akan berfungsi jika Anda mengikat port httpd ke port yang lebih rendah dari 1024!
Jika Anda menggunakan
(sudo) brew services ...
untuk memulai httpd, Anda harus menggunakan(sudo) brew services list
perintah yang tepat untuk memeriksa status:Jika Anda memulainya sebagai root lalu daftarkan dengan root privs:
sudo brew services start httpd
>sudo brew services list
atau dengan privasi pengguna:
brew services start httpd
>brew services list
.Untuk mengatasi masalah Anda, keluarkan Apple httpd:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
hentikan httpd apa pun yang dimulai oleh apachectl:
Sekarang - dengan asumsi Anda ingin menggunakan httpd homebrew di port istimewa - masukkan:
Periksa mulai sukses dengan
sudo brew services list
.sumber
apachectl stop
memberikan outputhttpd (no pid file) not running
dan ketika saya menjalankansudo brew services httpd start
sudo brew services list
menunjukkan apache2 (httpd)started
dalam warna kuning Ketika saya mencoba mengakses apa pun yang berhubungan dengan halaman web saya tidak bisa. Saya bertanya-tanya apakah pembaruan ke 10.13 mengubah sesuatu di apache yang mencegahnya dimulai.Mengenai http homebrew, satu masalah yang baru-baru ini saya temui adalah file lama httpd.pid yang mencegah httpd mulai. Gejala itu
apachectl start
mengatakan httpd sudah berjalan, tetapi ternyata tidak.Karena ada file lama di sini:
Solusi adalah menghapus file pid ini dan kemudian httpd dimulai.
sumber
httpd
monitor aktivitas. Ini memperbaikinya.brew services list
saya mendapatkan status kuning 'mulai' yang berarti ada sesuatu yang salah dengan status aktif server. Menghapus pid memperbaiki ini dan sekarang daftar layanan menunjukkan status aktif sebagai hijau 'dimulai' sebagai gantinya sekarang. Terima kasih untuk ini!Saya menghadapi hal yang sama setelah saya meng-upgrade ke High Sierra sebelumnya hari ini. Saya menemukan bahwa file apache berikut diganti dengan versi baru. Untungnya untuk semua file ini terdapat FILE ~ file sebelumnya di folder yang sama. Saya baru saja menyalin versi ~ sebelumnya kembali ke yang asli, restart apache dan semuanya baik-baik saja.
Dalam folder
/etc/apache2
:Contoh:
sumber
/etc/apache2/extra/
terdapat sekitar 10 file dengan ~ yang sebelumnya ditambahkan pada mereka, jika semua ini diubah, atau hanya dua yang Anda sebutkan dalam/etc/apache2/extra/
folderSaya memiliki masalah yang sama
Ini berarti httpd keluar secara tidak normal.
Saya kemudian secara manual mulai httpd untuk melihat apa masalahnya
Melihat izin itu cukup jelas
Saya pikir saya mulai httpd sebagai root yang menyebabkan masalah ini. Saya menghapus file dan setelahnya
semuanya baik-baik saja.
sumber
Saya mengalami ini baru-baru ini. Penyebabnya adalah homebrew menginstal apache2 / httpd di folder yang dapat diakses pengguna dan berjalan sebagai pengguna (dengan menjalankan perintah: brew services start httpd).
Tidak berjalan sebagai pengguna biasa berarti httpd tidak dapat mendengarkan pada port istimewa (1024 dan di bawah).
Jadi, bahkan jika httpd.conf dikonfigurasi untuk mendengarkan 80 dan 443, httpd tidak dapat menerima permintaan melalui port tersebut.
Keunikannya adalah ketika Anda memulai httpd dengan menjalankan perintah: sudo apachectl start. Perintah ini memulai httpd sebagai pengguna root. Pengguna root diizinkan untuk mendengarkan pada port 80 dan 443. httpd kemudian menjatuhkan hak akses kembali sebagai pengguna _www.
Jadi jawaban singkatnya adalah menjalankan http homebrew pada port 80 dan 443 adalah memulainya menggunakan: sudo apachectl start. Anda juga dapat memulainya dengan: sudo brew services start httpd. Brew akan memberi tahu Anda mengklaim folder tertentu untuk root, yang saya kira baik-baik saja tetapi tidak diperlukan karena sudo apachectl start tidak memerlukan izin file dan / atau perubahan pemilik.
sumber
Saya akan menyarankan sebaliknya apa yang dikatakan HomeBrew selalu jalankan httpd oleh sudo. Oleh karena itu jika Anda melakukan ps -aef | grep httpd Anda akan melihatnya terdaftar berjalan. Melakukan tanpa sudo tidak menghasilkan ps output yang dapat memberikan kesan salah httpd tidak berjalan.
Saya juga tidak yakin apakah ada konfigurasi yang berbeda atau sama yang dimuat dalam kedua kasus. Saya menginstal PHP dan membuat file test.php dengan phpinfo di direktori DocumentRoot. Jika Anda memulai apache dengan sudo, Anda mungkin melihat phpinfo dengan localhost / test.php saat menggunakan layanan brew, mulai httpd akan memberi Anda kesalahan jika DocumentRoot berada di area di mana akses root diperlukan.
sumber