Question OSX, Impossible d'écouter sur 0.0.0.0:80 (raison: permission refusée)


Je suis sur Mavericks OSX. J'ai installé PHP 5.5 depuis http://php-osx.liip.ch/. Quand je vais sur localhost dans un navigateur, je reçois une page qui dit "ça marche!" ce qui n'est pas une page que j'ai créée, donc je ne sais pas où elle se trouve. Est-ce à partir de l'installation de PHP ou simplement d'Apache?

Lorsque j'ouvre mon IDE (PHPStorm) et que je lance le site Web, cela fonctionne si j'utilise un port comme le 8080. Si je règle le port sur 80, cela échoue et l'EDI dit:

/usr/local/php5/bin/php -S 0.0.0.0:80 -t /mywebsitepath/ 

Failed to listen on 0.0.0.0:80 (reason: Permission denied)

Lorsque j'ai cherché cette erreur spécifique, tout ce que j'ai trouvé était de l'aide pour NGINX, mais j'utilise Apache. Que dois-je changer pour pouvoir exécuter mon code localement sur le port 80?

Je veux faire cela pour pouvoir utiliser localhost au lieu de localhost: 8080.


4
2018-01-29 20:04


origine


Depuis que vous obtenez une page de localhost, signifie que certains logiciels de votre ordinateur utilisent déjà le port 80. Deux programmes ne peuvent pas utiliser le même port en même temps. - Ben Voigt
Comment puis-je voir ce qui l'utilise actuellement? Je suppose que c'est quelque chose qui se passe au démarrage. - Justin
Pour cela, voir Qui écoute sur un port TCP donné sur Mac OS X? - Ben Voigt
Quand je fais sudo lsof -i TCP:80 | grep LISTEN Je n'ai aucun résultat. - Justin
vous n'avez pas désactivé le numéro de port-> recherche de nom, donc il pourrait être en sortie TCP:http (Je ne sais pas pour Mac lsof, mais netstat sur d'autres systèmes d'exploitation serait). Vérifiez la sortie de juste sudo lsof -i TCP pour voir dans quel format il est - Ben Voigt


Réponses:


Les ports inférieurs à 1024 sont privilégiés et ne peuvent être liés à une autre personne que root. Comme vous ne pouvez pas exécuter votre IDE en tant que root, je configurerais un proxy Nginx allant du port 80 au port 8080, il devrait être facile à faire, il existe de nombreux tutoriels = D


14
2018-01-29 20:09



Ou un proxy Apache, si vous êtes plus familier avec cela. Nginx bascule cependant. Oh et comme vous avez Apache OSX sur le port 80, vous devrez l'arrêter (ou utiliser il comme proxy) - Yarek T
Il pourrait probablement exécuter son IDE en tant que root .. "sudo open / Applications / PHPStorm" - bien que je ne sois pas sûr que cet IDE utilise des espaces de travail de manière à pouvoir le pointer sur le projet. Exécuter sur un port au-dessus de 1024 semble un peu moins compliqué qu’un proxy inverse nginx, bien qu’il soit assez facile à établir. - James T Snell
Si Apache OSX est exécuté sur le port 80 et que je ne peux pas l'utiliser à partir de mon IDE, y a-t-il un point dans son fonctionnement? Serait-il judicieux de l'éteindre? Est-ce possible? - Justin
@Justin À moins que vous ayez quelque chose qui soit spécifiquement requis pour être le port 80, même en cours de développement, j'utiliserais simplement le port 8080. Cela crée le moins de problèmes de tête / de travail et de sécurité. - Darth Android
Merci. Alors que je pouvais arrêter Apache pour que l'adresse localhost soit libérée (plus de page "Ça marche!"), Je ne pouvais toujours pas lancer mon IDE sur le port 80 pour la raison que vous décrivez dans votre réponse. Je vais juste traiter l'URL laide pour dev. - Justin


L'IP 0.0.0.0 est réservé par les normes Ethernet, vous ne pouvez pas l'utiliser, utilisez plutôt 127.0.0.1. Mais comme je sais que vous n'avez pas vraiment besoin de saisir une adresse IP pour indiquer au serveur ce qu'il doit écouter, vous n'avez besoin que du port.


-5
2018-01-29 20:18



0.0.0.0est INADDR_ANY, en tant qu’adresse d’écoute, elle a la signification particulière de ne pas filtrer par adresse IP. - Ben Voigt