0 votos

¿Cómo puedo acceder a CGI-scripts no almacenados en WWW-Root?

¿Cómo puedo acceder a cgi scripts desde el navegador si el directorio CGI-Executables está por encima de la carpeta www-Root? No quiero usar algo como ../. Intenté navegar a localhost/cgi-bin/ pero dio un error. Decía permiso denegado.

¿Cómo configuro estos ajustes? También, ¿pueden los alias del directorio /~nombre de usuario ejecutar cgi-scripts?

3voto

Tony Williams Puntos 4903

Si echas un vistazo al archivo de configuración principal de Apache2, /etc/apache2/httpd.conf verás que hay dos cosas que hay que hacer para permitir que /Library/WebServer/CGI-Executables contenga los archivos cgi.

En primer lugar, como no está cubierto por los permisos del directorio de documentos que tiene al lado, necesitará un bloque "Directorio" para definir los permisos de todos los archivos y directorios que están bajo él. En el caso de este directorio no permite absolutamente nada. Por eso, al apuntar el navegador al directorio, dice permisos denegados. No te preocupes, lo segundo permite los archivos cgi en el directorio a ejecutar.

En segundo lugar, necesita un comando "ScriptAlias" que indique al servidor qué URL se utilizará para apuntar a él, de modo que el servidor encuentre los archivos y permita su ejecución.

ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) \
"/Library/WebServer/CGI-Executables/$1"

Esto dice básicamente que "después de eliminar el nombre de host, cualquier URL que comience con "/cgi-bin/" y continúe con un trozo de texto seguido de un punto seguido de otro trozo de texto apunta a un archivo con un nombre que coincide con el último trozo en el directorio ""/Library/WebServer/CGI-Executables/$1"

Si quiere colocar los archivos CGI en uno de sus directorios de usuario, tendrá que hacer algunos cambios en un archivo de configuración diferente. Encontrará el archivo de configuración para las acciones de los usuarios en /etc/apache2/users con un archivo de configuración para cada usuario. Aquí tiene un ejemplo:

<Directory "/Users/jessica/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Para ello tendrá que añadir o bien "ExecCGI" a la línea de "Opciones" para que pueda tener archivos CGI en cualquier lugar de su directorio de Sitios o bajo o añadir un nuevo bloque de Directorio para su carpeta CGI. Se vería así :-

<Directory "/Users/jessica/Sites/CGI">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Dado que esto es en nuestro DocumentRoot no necesitamos usar el ScriptAliasMatch.

(La segunda opción es la más segura).

1voto

Eekhoorn Puntos 113

Normalmente odio hacer esto, pero con algunos experimentos descubrí cómo resolver el problema.

  1. Añade un script a la carpeta CGI-Executables/, y establece su permiso en 755 (chmod 755 ./nombre-archivo.

  2. Si quieres cambiar esta configuración, $cd /etc/apache2/ y edita el archivo httpd.conf. Pude confirmar que esta es la ubicación correcta que gestiona la configuración, con este fragmento del archivo.

ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"

No estoy seguro de lo que hace exactamente, pero puedo estar bastante seguro por los caracteres que crea el cgi-bin como un alias de CGI-Executables. Así que para modificar esto como ser la carpeta, simplemente cambiar esta configuración aquí a una ubicación diferente.

Todavía no estoy seguro de la configuración de un cgi-bin para un directorio ~/nombre-usuario si alguien puede ayudar con eso

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