¿Cómo accedo a CGI-Scripts no almacenados en WWW-Root?

0

¿Cómo accedo a los scripts cgi desde el navegador si el directorio CGI-Executables está sobre la carpeta www-root? No quiero usar algo como ../. Intenté navegar a localhost / cgi-bin / pero dio un error. Se dijo permiso denegado.

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

    
pregunta rubixibuc 16.02.2012 - 08:49

2 respuestas

3

Si observa el archivo de configuración principal de Apache2, /etc/apache2/httpd.conf verá que hay dos cosas que deben hacerse para permitir que / Library / WebServer / CGI-Executables contenga los archivos cgi.

Primero, ya que no está cubierto por los permisos para el directorio del documento que está al lado, necesitará un bloque de "Directorio" para definir los permisos para todos los archivos y directorios que se encuentran debajo. En el caso de este directorio no permite que pase absolutamente nada. Esta es la razón por la que cuando apuntaste tu navegador al directorio, dijo que los permisos fueron denegados. No se preocupe, la segunda cosa permite que se ejecuten los archivos cgi en el directorio.

Segundo, necesita un comando "ScriptAlias" que le indique al servidor qué URL se usará para señalarlo, de modo que el servidor encuentre los archivos y permita que se ejecuten.

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

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

Si desea colocar archivos CGI en uno de sus directorios de usuarios, deberá realizar algunos cambios en un archivo de configuración diferente. Encontrará el archivo de configuración para recursos compartidos de usuarios en / etc / apache2 / users con un archivo de configuración para cada usuario. Aquí hay un ejemplo:

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

Para esto, tendrá que agregar "ExecCGI" a la línea "Opciones" para que pueda tener archivos CGI en su directorio de Sitios o debajo, o agregar 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 está en nuestro DocumentRoot, no necesitamos usar ScriptAliasMatch.

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

    
respondido por el Tony Williams 26.01.2014 - 08:35
1

Usualmente odio hacer esto pero con un poco de experimentación descubrí cómo resolver el problema.

  1. Agregue un script a la carpeta CGI-Executables /, y establezca su permiso en 755 (chmod 755 ./file-name.

  2. Si desea cambiar esta configuración, $ cd / etc / apache2 / y edite el archivo httpd.conf. Pude confirmar que esta es la ubicación correcta que administra 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 de los caracteres que crea el cgi-bin como un alias para CGI-Executables. Entonces, para modificar esto como la carpeta, simplemente cambie esta configuración aquí a una ubicación diferente.

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

    
respondido por el rubixibuc 16.02.2012 - 09:13

Lea otras preguntas en las etiquetas