Ketika saya mencoba memulai Apache dari panel kontrol XAMPP (Mac OS X 10.6.8 Snow Leopard), saya mendapatkan popup kesalahan berikut dan Apache tidak akan memulai:
/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 berjalan sempurna 10 menit sebelumnya. Saya menghentikan Apache untuk menambahkan beberapa .conf
file dan gagal di restart. Saya menghapus semua .conf
file baru (yaitu mengembalikannya seperti sebelumnya) tetapi sekarang saya mendapatkan pesan di atas.
Saya telah memeriksa AppMonitor dan saya melihat httpd
prosesnya (satu persatu _www
bersarang di dalam root). Hanya mencoba berhenti tetapi mereka dihidupkan ulang secara otomatis pada ID proses baru dan itu tidak menyelesaikan masalah.
Dan saya sudah mencoba reboot penuh dan saya masih mendapatkan kesalahan yang sama (sebelum memulai aplikasi apa pun). Saya akan berterima kasih jika seseorang memiliki ide bagaimana menyelesaikan ini.
sumber
apachectl
). Jika karena beberapa kesalahan, itu tidak terjadi. Anda selalu dapat memaksa mereka untuk menutup dengan menggunakan sesuatu sepertisudo killall httpd
atausudo killall apache2
.sudo killall httpd
dan mematikan proses tetapi kemudian membuatnya kembali, sama seperti ketika saya mengklik Proses Keluar di Monitor Aplikasi. Proses httpd yang dimiliki oleh _www bersarang dalam proses httpd yang dimiliki oleh root, yang pada gilirannya bersarang dalam proses launchd yang dimiliki oleh root. Mungkin launchd memulai ulang setiap kali?Ini akan menonaktifkan permentaly httpd.
sumber
Ada dua hal yang dapat menyebabkan masalah ini: Layanan berbagi web bawaan Apple menjadi aktif atau proses XAMPP zombie masih aktif.
Jika ini disebabkan oleh berbagi web Apple, Anda dapat menangani semua ini dengan membuka
System Preferences…
dan memilihSharing
. Sesampai di sana, hapus centangWeb Sharing
— yang pada dasarnya hanya Apachehttpd
— dan masalah Anda harus diselesaikan.Yang mengatakan, jika ini pada dasarnya adalah "zombie" contoh dari Apache berjalan setelah beberapa XAMPP tweak, taruhan terbaik adalah melakukan sesuatu seperti berikut:
Pertama, jalankan
lsof
(daftar file yang terbuka) yang akan mendaftar semua file yang aktif dibuka pada sistem.Perhatikan dua
grep
perintah yang disalurkan secara bersamaan? Apa yang saya lakukan adalah mendapatkan daftar file yang terbuka, kemudian memfilter file-file yang memiliki jalur file yang terhubung ke MAMP — atau dalam kasus Anda mengubahnya menjadi XAMPP atau folder / direktori apa pun yang Anda gunakan untuk menjalankannya — dan saya memfilterapache
in nama path. Daftarnya akan terlihat seperti ini:Oke, itu adalah daftar seluruh proses. Apache berjalan pada konsep ada satu proses orangtua dengan banyak proses anak melahirkan untuk berurusan dengan lalu lintas. Jadi, jika Anda membunuh proses anak, proses orang tua memperhatikannya & respawns anak baru.
Sekarang melihat daftar itu, biasanya angka terendah dalam daftar proses itu adalah orang tua — karena dimulai sebelum proses anak lainnya tentu saja — jadi Anda harus membunuh itu untuk membunuh semua proses. Jadi dalam hal ini, proses angka terendah dalam daftar adalah
2204
, jadi jalankan saja perintah ini:Dan kemudian proses orang tua terbunuh dan semua proses anak harus hilang juga. Maka port
80
harus tersedia lagi.sumber