Cómo arreglar 403 en Mac OS X incorporado Apache?

Intento establecer un entorno local en mi nueva MacBook Air 13 ": Apache incorporado con mi propio DocumentRoot , PHP y MySQL. Por lo general, actualizo /etc/hosts solo para ejecutar mis sitios web locales con un enlace permanente: local/example . Para las references, suelo verificar:

  • ¿Cómo convertir Mac OS X Lion en un server web?
  • Habilitación de Apache en Mac OS X Mountaion Lion
  • Permisos de Apache

Esta vez, simplemente recibo un error 403 Forbidden cada vez que toco 127.0.0.1 , localhost o local . Primero vi a través de la terminal que se ejecutan tanto Apache como PHP (aunque no puedo ver páginas PHP); luego actualicé todos los permissions según los permissions de Apache ; ahora estoy desesperado. Aquí están las configuraciones de Apache relevantes:

  • Actualización de OpenSSL en OSX
  • Error al configurar mcrypt después de actualizar a El Capitan
  • Servidor web ASP y PHP en OS X
  • Apache no se iniciará al reiniciar
  • No se puede conectar al server "localhost"?
  • Terminal y bash no pueden comenzar con el error libiconv
    • /etc/hosts ( ver file – se agregó una línea)
    • /etc/apache2/httpd.conf ( ver file – se actualizó DocumentRoot )
    • /etc/apache2/users/joao.conf ( ver file – creado este file)
    • /etc/apache2/extra/httpd-vhosts.conf ( ver file – VirtualHost actualizado)

    Parece que Apache de alguna manera me niega el acceso a mi DocumentRoot (que por cierto es ~/Sites ). Como ~/Sites es en realidad un enlace simbólico, intenté actualizar DocumentRoot con las siguientes routes (todas apuntando al mismo directory):

    • ~/Sites
    • /Users/joao/Sites
    • /Users/joao/Dropbox/Workflow/Sites (el directory original )

    Todavía lanzando 403 . ¿Alguna idea de cómo corregir / depurar esto?

    Actualización rápida : así es como se ve mi /var/log/apache2/joao.pt-error_log :

     [Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to / denied [Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied [Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied [Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied [Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied [Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied [Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied [Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied 

  • ¿Es seguro agregarse al grupo 82 (_clamav)?
  • ¿Cómo evito que Apache se inicie automáticamente?
  • Apache no se iniciará al reiniciar
  • Instalar una versión diferente de Apache y PHP
  • Habilita la carpeta ~ / Sites
  • ¿Cómo debo corregir los propietarios y los permissions en una carpeta de usuario de OS X?
  • 6 Solutions collect form web for “Cómo arreglar 403 en Mac OS X incorporado Apache?”

    Tengo un alias especificado en el server OSX que apunta a un directory de usuario. Pasé un largo time chmodding y jugando con el usuario _www, agregando permissions ejecutables recursivamente, desinstalando macports y todo tipo de cosas tratando de hacer que esto funcione. Ni idea de por qué no estaba funcionando.

    Finalmente, acabo de marcar la checkbox "carpeta compartida" en el Buscador para esa carpeta, y funcionó , en el dominio especificado, con php activo, de la manera que yo quería. : / … así que fue fácil.

    En general, soluciono esto configurando el usuario de Apache en entornos locales y en máquinas donde el único usuario que usa Apache soy yo. En /private/etc/apache2/httpd.conf , configure User a su nombre de usuario de _www , por ejemplo:

     User _www 

    ->

     User joao 

    Y luego reinicia Apache:

     $ sudo apachectl restart 

    Pasos adicionales:

    1. Si tiene sesiones activas, van a dar errores de permiso ya que todavía son propiedad de _www . Poseerlos:

       $ sudo chown joao: /var/tmp/sess_* 

    Trascendencia:

    Después de esto, Apache (y PHP y otros) se ejecutarán como usted y obtendrán permiso de lectura / escritura para todos los files que tenga permiso de lectura / escritura. Pero dado que este es solo un entorno de desarrollo local, eso no debería ser un problema a less que no tenga reglas para bloquear Apache en su firewall y permita que files cuestionables como exploradores de files, shells, scripts que pueden contener vulnerabilidades se ejecuten bajo Apache; en cuyo caso, cualquiera que incluya su vecino wifi público en un café puede ingresar http://<your IP> y hacer lo que esos scripts les permitan hacer.

    De hecho, debe evitar esto independientemente de los scripts que ejecute o incluso si no se configura el usuario de Apache para usted, ya que probablemente no desee que personas externas random puedan ver los contenidos de su localhost .

    Prevención:

    1. Haz que Apache solo escuche el localhost. De nuevo, en httpd.conf :

       Listen 80 

      ->

       Listen 127.0.0.1:80 

      Y reinicie Apache nuevamente:

       $ sudo apachectl restart 
    2. Deshabilite Apache en el firewall de la aplicación (tenga en count que es posible que ya lo haya deshabilitado si hizo clic en Deny si / cuando se le preguntó la primera vez que ejecuta Apache):

      1. Abra las System Preferences » Security & Privacy » Firewall .
      2. Haga clic en el ícono de candado a la esquina inferior izquierda e ingrese su contraseña si es necesario.
      3. Encienda el firewall si está deshabilitado.
      4. Haga clic en Firewall Options .
      5. Haga clic en el button + .
      6. Pulse cmd ⌘ + ⇧ shift + G e ingrese /usr/sbin/httpd y click Add (si httpd no aparece allí, puede searchlo en el terminal por el which httpd )
      7. En la list, click httpd y select Block incoming connections .
      8. Presiona OK .
      9. Recargar el firewall:

         $ launchctl unload /System/Library/LaunchAgents/com.apple.alf.useragent.plist $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.alf.agent.plist $ launchctl load /System/Library/LaunchAgents/com.apple.alf.useragent.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.alf.agent.plist 
    3. Restrinja PHP a la raíz del documento. En php.ini :

       open_basedir = /Users/joao/Sites/:/var/tmp/ 

      ( /var/tmp/ es para sesiones)

    Utilice las tres soluciones para protegerse en caso de que una de ellas se deshabilite por alguna razón.

    – Tenga en count que como mi idioma activo en mi máquina no es inglés, la networkingacción puede ser un poco diferente (las opciones de menu y la networkingacción pueden ser diferentes independientemente del idioma en varias versiones de OS X).

    – Las líneas que comienzan con $ deben ingresarse en la línea de command (Terminal o iTerm, etc.), con $ eliminado.

    Acabo de resolver mi problema estableciendo permissions no solo para el directory DocumentRoot , sino también para todos sus directorys principales. Así es como lo hice .

    (13) Permiso denegado

    El error 13 indica un problema de permissions del sistema de files. Es decir, a Apache se le denegó el acceso a un file o directory debido a permissions incorrectos. En general, no implica un problema en los files de configuration de Apache.

    Para servir files, Apache debe tener el permiso apropiado otorgado por el sistema operativo para acceder a esos files. En particular, el Usuario o Grupo especificado en httpd.conf debe poder leer todos los files que se servirán y search en el directory que contiene esos files, junto con todos los directorys principales hasta la raíz del sistema de files.

    Los permissions típicos en un sistema tipo Unix para resources que no son propiedad del Usuario o Grupo especificado en httpd.conf serían 644 -rw-r-r– para files ordinarios y 755 drwxr-xrx para directorys o scripts CGI. También es posible que deba comprobar los permissions ampliados (como los permissions de SELinux) en los sistemas operativos que los admiten.

    Si está ejecutando 2.4, el código de error AH puede darle más información aquí.

    • AH00132: permissions de file denegar acceso al server
    • AH00035: acceso denegado porque faltan permissions de búsqueda en un componente de la ruta. Un ejemplo

    Supongamos que recibió el error Permiso denegado al acceder al file /usr/local/apache2/htdocs/foo/bar.html en un sistema tipo Unix.

    Primero compruebe los permissions existentes en el file:

     cd /usr/local/apache2/htdocs/foo ls -l bar.htm 

    Solucionarlos si es necesario:

     chmod 644 bar.html 

    Luego haga lo mismo para el directory y cada directory principal (/ usr / local / apache2 / htdocs / foo, / usr / local / apache2 / htdocs, / usr / local / apache2, / usr / local, / usr):

     ls -la chmod +x . cd .. # repeat up to the root 

    En algunos sistemas, el nombre de la utilidadi se puede usar para ayudar a encontrar problemas de permissions al enumerar los permissions a lo largo de cada componente de la ruta:

    namei -m /usr/local/apache2/htdocs/foo/bar.html Si su sistema no tiene namei, puede usar parsepath. Se puede get desde aquí.

    Si todos los permissions estándar son correctos y aún obtiene un error de Permiso denegado, debe verificar los permissions extendidos. Por ejemplo, puede usar el command setenforce 0 para desactivar SELinux y verificar si el problema desaparece. Si es así, ls -alZ se puede usar para ver los permissions de SELinux y chcon para corregirlos.

    En casos poco frecuentes, esto puede deberse a otros problemas, como un problema de permissions de files en otro lugar de su file apache2.conf. Por ejemplo, una directiva WSGIScriptAlias ​​que no se correlaciona con un file real. El post de error puede no ser exacto sobre qué file no se puede leer.

    NO configure files o directorys en el modo 777, incluso "solo para probar", incluso si "es solo un server de testing". El propósito de un server de testing es hacer las cosas bien en un entorno seguro, no salirse con la suya al hacerlo mal. Todo lo que le dirá es si el problema es con los files que realmente existen.

    Scripts CGI

    Aunque el permiso del script CGI puede parecer correcto, el binary real especificado en el shebang puede no tener los permissions adecuados para ejecutarse. (O algún directory en su ruta, verifique con namei como se explicó anteriormente).

    (13) Permiso denegado: proxy: HTTP: bash de connection a 127.0.0.1:8080 (localhost) fallido

    Este error no es realmente sobre permissions de files ni nada de eso. Lo que realmente significa es que a httpd se le ha negado permiso para conectarse a esa dirección IP y puerto.

    La causa más común de esto es que SELinux no permite que httpd haga conexiones de networking.

    Para resolverlo, debe cambiar un valor boolean SELinux (que se mantendrá automáticamente durante los reinicios). Es posible que también desee reiniciar httpd para restablecer el trabajador proxy, aunque esto no es estrictamente necesario.

    # setsebool -P httpd_can_network_connect 1

    Actualizo a macOSS Sierra , Versión 10.12

    Enfrenta el mismo problema, hice dos cosas para arreglarlo correctamente. Lo siguiente es mi enfoque.

    1) Compruebe el file " /private/etc/apache2/extra/httpd-userdir.conf ". Cambio

     #Include /private/etc/apache2/users/*.conf 

    a

     Include /private/etc/apache2/users/*.conf 

    2) ** Y edite su " /etc/apache2/httpd.conf"

    cambio

     Options FollowSymLinks Multiviews 

    a

     Options FollowSymLinks Multiviews Indexes 

    finalmente su raíz del documento se verá como la siguiente,

     DocumentRoot "/Library/WebServer/Documents" <Directory "/Library/WebServer/Documents"> Options FollowSymLinks Multiviews Indexes MultiviewsMatch Any AllowOverride All Require all granted 

    3) Reiniciar Apache

     sudo apachectl restart 

    Todavía estás enfrentando el problema, amablemente revisa Cómo configurar Apache en macOS Sierra 10.12

    Los siguientes pasos me funcionaron en High Sierra con Apache 2.4

    (Basado en el siguiente excelente tutorial: http://www.cgi101.com/book/connect/mac.html , actualizado con pasos adicionales para las diferencias de versión)

    1. Mueva el file a:

       /Library/WebServer/CGI-Executables 
    2. Verifique que el file tenga permissions de ejecución:

       ls -l /Library/WebServer/CGI-Executables 

      Si no, usa:

       chmod -x /Library/WebServer/CGI-Executables/myfile.cgi 
    3. Descomente las siguientes líneas en /etc/apache2/httpd.conf

       AddHandler cgi-script .cgi .pl AddType text/html .shtml AddOutputFilter INCLUDES .shtml LoadModule cgi_module libexec/apache2/mod_cgi.so 
    4. Cambie también la estrofa del directory "/ Library / WebServer / CGI-Executables" a:

       <Directory "/Library/WebServer/CGI-Executables"> AllowOverride None Options ExecCGI Require all granted </Directory> 
    5. Luego reinicia Apache:

       sudo apachectl -k restart 

    Casi con cada nueva versión de macOS, los cambios se perderán y tendrá que volver a hacer el trabajo e incluso realizar diferentes pasos para solucionarlo. Su mejor amigo son los loggings de Apache ubicados en / var / log / apache2 / (/ var / log / apache2 / error_log)

    Estaba usando ACL para establecer permissions, siguiendo las instrucciones en " Cómo establecer permissions de files y directorys para Apache en Mac OS X ", pero aún obtengo:

     [Wed Feb 12 15:43:51 2014] [error] [client ::1] (13)Permission denied: access to /trace/trace.php denied (filesystem path '/Library/WebServer/Documents/trace/trace.php') because search permissions are missing on a component of the path 

    Luego leí " (13) Permiso denegado " (vinculado en la respuesta de João Ramos ) y traté de agregar "ejecutar" a la list de control de acceso. Eso funciono.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).