10 votos

Conflicto entre Apache interno y Apache instalado a través de Homebrew

Me he encontrado con el siguiente problema. Quería tener múltiples versiones de PHP así que usé este artículo para conseguirlo. Pero no pude detener a Apache a través de sudo apachectl -k stop al ejecutar este comando estoy obteniendo el siguiente resultado: enter image description here

Así que ahora parece que tengo dos caminos de configuración:

  • open -e /usr/local/etc/httpd/httpd.conf

  • open -e /etc/apache2/httpd.conf

Y actualmente estoy frustrado y me encuentro con las siguientes preguntas - ¿qué ruta es la correcta? - ¿por qué los cambios en ambos archivos no cambian nada? (después de cargar el módulo php7 en lugar de php5 no tiene impacto después de que corrí sudo apachectl restart ) - ¿cómo debo hacer frente a esto y resolver el conflicto de los servidores?

¿Puede alguien ayudarme a resolver esto?

P.D. Si se necesita algún detalle adicional o se me ha pasado algo por alto, hágamelo saber en los comentarios.

17voto

Nico Vink Puntos 21

Tuve el mismo problema en un sistema Sierra. Yo corro:

which -a apachectl

se ha emitido:

/usr/sbin/apachectl
/usr/local/bin/apachectl

para detener el apache por la versión de apple: sudo /usr/sbin/apachectl stop

Para ver los procesos en ejecución: ps aux | grep httpd Salió:

ibook             1359   0,0  0,0  2432804    768 s000  S+    4:13pm   0:00.00 grep httpd
_www              1014   0,0  0,0  2479412    836   ??  S     3:57pm   0:00.00 

/usr/sbin/httpd -k restart
root              1013   0,0  0,1  2479668   7544   ??  Ss    3:57pm   0:00.12 /usr/sbin/httpd -k restart

Así que para detener apache por apple: sudo /usr/sbin/httpd -k stop Y para comprobar si se ha producido: ps aux | grep httpd Salió:

ibok             1375   0,0  0,0  2432804    776 s000  S+    4:14pm   0:00.00 grep httpd

Para iniciar el brew apache:

sudo /usr/local/bin/apachectl start

Y para comprobar si está encendido: ps aux | grep httpd se ha emitido:

 ibook             1390   0,0  0,0  2432804    768 s000  S+    4:14pm   0:00.00 grep httpd
    _www              1387   0,0  0,0  2652596    780   ??  S     4:14pm   0:00.00 /usr/local/opt/httpd/bin/httpd -k start
    _www              1386   0,0  0,0  2652596    752   ??  S     4:14pm   0:00.00 /usr/local/opt/httpd/bin/httpd -k start
    _www              1385   0,0  0,0  2652596    756   ??  S     4:14pm   0:00.00 /usr/local/opt/httpd/bin/httpd -k start
    _www              1384   0,0  0,0  2652596    756   ??  S     4:14pm   0:00.00 /usr/local/opt/httpd/bin/httpd -k start
    _www              1383   0,0  0,0  2652596    744   ??  S     4:14pm   0:00.00 /usr/local/opt/httpd/bin/httpd -k start
    root              1382   0,0  0,1  2652596  10976   ??  Ss    4:14pm   0:00.03 /usr/local/opt/httpd/bin/httpd -k start

Para ver la versión en ejecución de apache: httpd -V que se emite:

Server version: Apache/2.4.28 (Unix)
Server built:   Oct 29 2017 19:28:54
Server's Module Magic Number: 20120211:68
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

¡Y esa era la versión instalada por APPLE (2.4.28) de nuevo! En lugar de la versión 2.4.38. Reconozco la frustración.

¡Pero resulta que las páginas en la url de localhost son servidas por el nuevo apache!

Para mostrar la versión de apache en OSX:

Entrada del terminal: /usr/sbin/apachectl -v

Versión del servidor: Apache/2.4.28 (Unix) Servidor construido: 29 de octubre de 2017 19:28:54

Y para ver la versión de cerveza:

Entrada del terminal: /usr/local/bin/apachectl -v

Versión del servidor: Apache/2.4.38 (Unix) Servidor construido: Feb 10 2019 02:49:25

Y para php: Sólo tienes que escribir en el terminal : which -a php Mi mac muestra:

/usr/bin/php

/usr/local/bin/php

Y para mostrar las versiones de php sólo hay que usar esto:

Entrada del terminal: /usr/bin/php -v

muestra la versión de OSX: PHP 5.6.30 (cli) (construido: 29 de octubre de 2017 20:30:32) Copyright © 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies

Y la entrada del terminal: /usr/local/bin/php -v

Mostrará la versión de brebaje: PHP 7.3.2 (cli) (construido: Feb 14 2019 10:09:47) ( NTS ) Copyright © 1997-2018 The PHP Group Zend Engine v3.3.2, Copyright © 1998-2018 Zend Technologies con Zend OPcache v7.3.2, Copyright © 1999-2018, por Zend Technologies

0 votos

Esta es una respuesta increíblemente útil, ¡felicitaciones!

0 votos

Gracias. Esto me funciona.

8voto

Xuan Ham Nguyen Puntos 81

Creo que la ruta de apache por defecto

/etc/apache2/httpd.conf

y ruta de apache homebrew

/usr/local/etc/httpd/httpd.conf

Y puede que tengas 2 apaches en tu sistema utiliza este cmd para comprobarlo

which -a apachectl

apache por defecto

/usr/sbin/apachectl 

apache para homebrew. Creo que sí.

/usr/local/bin/apachectl

El comando de abajo se utiliza para apache por defecto. Creo.

sudo apachectl restart

Puede utilizar este

sudo /usr/local/bin/apachectl restart

0 votos

¡Excelente! Gracias.

0voto

Nico Vink Puntos 21

También encontré esta información en la web que puede ser útil cuando uno usa OSXServer en lugar de OSX: OS X Server 5 ha introducido bastantes cambios.

Una vez que se instala OS X Server 5 en Yosemite o El Capitán, la versión "de escritorio" de Apache es asumida por una versión "de servidor" dentro de Server.app. Para diferenciar entre ambas y tener en cuenta los diferentes métodos para detener e iniciar Apache, se ha introducido un nuevo comando con server-apachectl.

Puedes seguir utilizando los mismos parámetros. Por ejemplo:

sudo server-apachectl graceful

sudo server-apachectl restart

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X