Resolver / Usuarios / myusername / Sites / foo ~ / bar localhost / ~ myusername High Sierra Apache server connection Error interno del servidor

0

Batalla de VirtualHost / Users / myusername / Sites / foo ~ / bar Error interno del servidor durante días intentando adjuntar localhost / ~ myusername a Apache / 2.4.28 http server en macOS 10.13 .3 El teatro de operaciones de High Sierra no funciona de acuerdo con ningún plan:

Apache no funciona con la carpeta Sitios del usuario en macOS 10.13 High Sierra

Configurar hosts virtuales en macos High Sierra 10.13 en Apache

Configurar localhost en macOS High Sierra (Apache, MySQL y PHP 7) con SSL / HTTPS

Mi pregunta es, por supuesto, muy similar a la de Fyfe: Apache no funciona con la carpeta de Sitios de usuario en macOS 10.13 High Sierra excepto que no necesito mantener ningún / Biblioteca / Servidor web / Documentos como no había ninguno, solo quiero Usuarios / nombre de usuario / Sitios para ser operativos.

De hecho, veo este problema de nombre de usuario y servidor de Apache por todas partes, ¿qué es más central para el desarrollo web que el que solo se conecta a tu maldito servidor? Parece que solo hay dos tipos de desarrolladores ~ / foo: "¡Acabo de hacer esto y funciona perfectamente!" y ~ / bar: "Hice todo eso y nada funciona". Bueno, la pregunta de Fyfe del 27 de septiembre de 17 tiene 15 respuestas y seguimos contando, el último es el 1 de febrero de 18, sin marca de verificación verde .

Una vez más, no había configurado o estado usando Apache, php o vhosts en Sierra, así que no necesito mantener / Biblioteca / Servidor web / Documentos ya que no había ninguno, el comando VirtualHost *: 80 se agregó a continuación para mantener la opción abierta , aunque solo estoy tratando de hacer que los Usuarios / myusername / Sites / foo y ~ / bar funcionen.

sudo apachectl configtest 
Syntax OK

php -v
PHP 7.1.7

/etc/apache2/extra/https-vhosts.conf

#Enable PHP interpretation within HTML files
<FilesMatch ".+\.html$">
  SetHandler application/x-httpd-php
</FilesMatch>

<VirtualHost *:80>
ServerName localhost
DocumentRoot /Library/WebServer/Documents/
</VirtualHost>

#VIRTUAL HOST ENTRY FOR foo.localhost
<VirtualHost *:80>
  DocumentRoot "/Users/myusername/Sites/foo"
  ServerName foo.localhost
  ErrorLog "/private/var/log/apache2/foo-error_log"
  CustomLog "/private/var/log/apache2/foo-access_log" common
</VirtualHost>

#VIRTUAL HOST ENTRY FOR bar.localhost
<VirtualHost *:80>
  DocumentRoot "/Users/myusername/Sites/bar"
  ServerName bar.localhost
  ErrorLog "/private/var/log/apache2/bar-error_log"
  CustomLog "/private/var/log/apache2/bar-access_log" common
</VirtualHost>

/ etc / hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

#Local myusername/Sites
127.0.0.1       foo.localhost
127.0.0.1       bar.localhost

#Map your IP address to localhost
127.0.0.1 apple.com www.apple.com

/etc/apache2/httpd.conf

# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.

ServerRoot "/usr"

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

#User _www
#Group _www

User myusername
Group staff

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so
LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">

/etc/apache2/extra/httpd-userdir.conf

Include /private/etc/apache2/users/*.conf
  • Los comandos de PHP 7 no funcionan
  • localhost / ~ myusername = > Error interno del servidor
  • foo.localhost = > resultados de búsqueda de Google "foo.localhost" = > caca
  • localhost = > Prohibido no tiene permiso para acceder a / en este servidor

Es hora de llamar a los ataques aéreos ... todo lo que tengo aquí es FUBAR

ACTUALIZACIÓN DE LA SOLUCIÓN: ¡klanomath sacó los primeros objetivos, Tanques! localhost / ~ myusername y enlace están funcionando.

Sin embargo ... Arrg ... al ingresar a localhost / ~ myusername php parece ejecutar este archivo /Sites/index.php, en el que aparece la carpeta "¡Hola de los sitios!" y aparece la página de phpinfo 7.1.7:

<?php
    echo "Hello From Sites Folder!";
    phpinfo();
?>

Sin embargo, esta combinación php index.html y example.php aparentemente no se ejecuta

<?php
    date_default_timezone_set('UTC');
    $day = date('l');
?>

<!doctype html>
<html>
   <head>
       <title>Hello, World! | Foo</title>
   </head>
   <body>
       <h1>Hello, World!</h1>
           <p>Welcome to <strong>Foo</strong>.</p>
           echo $greeting
   </body>
</html

example.php (ambos en el directorio foo)

<?php
   $greeting = 'Hello, PHP World!';
   echo '<h1>' . $greeting . '</h1>';
?>

donde se hace doble clic en /Sites/foo/index.html simplemente se abre una página de impresión

Hello, World!

Welcome to Foo.

echo $greeting (instead of Hello, PHP World!)
    
pregunta ehounder 04.03.2018 - 18:57

1 respuesta

0

Una configuración de trabajo simple que comienza con los valores predeterminados de los archivos de configuración de Apache de macOS es la siguiente:

/ etc / hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       foo.localhost
127.0.0.1       bar.localhost
255.255.255.255 broadcasthost
::1             localhost

Modificaciones del predeterminado /private/etc/apache2/httpd.conf file:

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
...
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so
...
DocumentRoot "/Users/<username>/Sites"
<Directory "/Users/<username>/Sites">
...
Include /private/etc/apache2/extra/httpd-vhosts.conf

Configuración de hosts virtuales /etc/apache2/extra/https-vhosts.conf

#Enable PHP interpretation within HTML files
<FilesMatch ".+\.html$">
  SetHandler application/x-httpd-php
</FilesMatch>

<VirtualHost *:80>
ServerName localhost
DocumentRoot /Users/<username>/Sites
</VirtualHost>

#VIRTUAL HOST ENTRY FOR foo.localhost
<VirtualHost *:80>
  DocumentRoot "/Users/<username>/Sites/foo"
  ServerName foo.localhost
  ErrorLog "/private/var/log/apache2/foo-error_log"
  CustomLog "/private/var/log/apache2/foo-access_log" common
</VirtualHost>

#VIRTUAL HOST ENTRY FOR bar.localhost
<VirtualHost *:80>
  DocumentRoot "/Users/<username>/Sites/bar"
  ServerName bar.localhost
  ErrorLog "/private/var/log/apache2/bar-error_log"
  CustomLog "/private/var/log/apache2/bar-access_log" common
</VirtualHost>

archivo de prueba PHP index.html en foo / and bar /:

<html><body><h1>Welcome to foo/bar. It works!</h1></body></html>

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>

No es necesario habilitar cosas del directorio de usuarios porque no quieres acceder a ... / ~ nombre de usuario /

Luego, en Safari o Google ingresa " enlace " en lugar de simplemente "bar | foo.localhost"

Esta configuración no debería / no permitirá el acceso a enlace o enlace . Pero en tu caso esto no es obligatorio de todos modos.

Si accede a enlace y enlace , etc., use DocumentRoot /Library/Websites/Documents predeterminado en httpd.conf y para vhost localhost. Además, habilite LoadModule userdir_module libexec/apache2/mod_userdir.so y Include /private/etc/apache2/extra/httpd-userdir.conf en httpd.conf. Habilite Include /private/etc/apache2/users/*.conf en /private/etc/apache2/extra/httpd-userdir.conf y agregue los respectivos < ⁣username1 | 2 | 3 > .conf en / private / etc / apache2 / users / para cada usuario.

    
respondido por el klanomath 05.03.2018 - 04:16

Lea otras preguntas en las etiquetas