habilitar - Hacer una extensión de archivo para ser interpretada por PHP
habilitar extensiones php linux (6)
Agregué esto a mi archivo .htaccess:
AddHandler fcgid-script .test
(Estoy usando FastCGI / VirtualMin / WebMin)
Y creó un archivo test.test con los contenidos;
<?php echo "test"; ?>
Esto da como resultado un error interno del servidor y este mensaje en el registro de errores:
[Thu Apr 16 14:12:57.631287 2015] [fcgid:warn] [pid 2646] (104)Connection reset by peer: [client xxxx:53595] mod_fcgid: error reading data from FastCGI server
[Thu Apr 16 14:12:57.631402 2015] [core:error] [pid 2646] [client xxxx:53595] End of script output before headers: test.test
¿Qué estoy haciendo mal? Traté de usar diferentes nombres de controlador como x-httpd-php o x-httpd-php5, pero eso no sirve para nada.
También probé:
<FilesMatch "/.test$">
SetHandler fcgid-script
</FilesMatch>
pero tiene el mismo error interno del servidor.
Cuestiono el controlador fcgid-script
. No es un controlador PHP normal, ni siquiera para FCGI. Normalmente verías
<FilesMatch "/.test$">
SetHandler application/x-httpd-php
</FilesMatch>
O
<FilesMatch "/.test$">
SetHandler php5-fcgi
</FilesMatch>
Si ninguno de los dos funciona, verifique que PHP FCGI esté instalado.
Intenta usar esto en tu archivo htaccess
AddType application/x-httpd-php .test
Consulte esta pregunta sobre el desbordamiento de la pila: problema con la ejecución de secuencias de comandos CGI en Apache .
No soy un tipo fastcgi. googled el problema. Tengo 2 problemas similares publicados en virtualmin
. Estoy agregando la respuesta publicada allí.
- vaya a virtualmin / su servidor virtual / configuración de servidor / opciones de sitio web /
- selecciona "Apache mod_php (ejecutar como usuario de Apache)" y luego guarda
- vuelva a activar "FCGId (ejecutar como propietario del servidor virtual)" (le solicitará Ejecutar scripts CGI como propietario del dominio)
- Salvar
Vaya a / home / sitename / fcgi-bin Utilice el comando follpwoing para restablecer la bandera inmutable
"chattr -i php5.fcgi"
A continuación, elimine los directorios / home / sitename / etc y / home / sitename / fcgi-bin (asegurándose de que todo lo que no esté relacionado con php, etc.) se guarda utilizando el conmutador virtualmin de nuevo al modo apache mod_php y luego al modo FCGId. El sitio ahora debería funcionar. No te olvides de seleccionar cualquier archivo / directorio en public_html al que apache: ten en cuenta que estos son los dos nombres de sitio.
Espero que te ayude.
Parece como si el módulo FastCGId no supiera cómo ejecutar el script: parece que falta la directiva FcgidWrapper (ya que su script PHP no tiene un Shebang ).
Dependiendo de su distribución, tiene que configurarlo manualmente o puede ajustar la directiva existente que ya maneja los archivos .php para que también maneje los archivos .test (por lo general, esto debe hacerse usando la directiva "SetHandler fcgid-script" y configurando / duplicando el Directiva FcgidWrapper).
Ejemplo ajustado (tomado de httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples ):
<FilesMatch "/.test$">
AddHandler fcgid-script .test
</FilesMatch>
Options +ExecCGI
FcgidWrapper /usr/bin/php5-cgi .test
Más información y ejemplos: httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#examples y http://tltech.com/info/php-on-fcgid/
Otros problemas podrían estar basados en permisos, por ejemplo, si usa suexec, el proceso fastcgid no puede escribir en los registros o no puede ejecutar el script de contenedor. Aquí sería realmente útil si pudiera indicar si los archivos .php normales se ejecutan correctamente.
Todos los scripts CGI requieren que agregue la línea Shebang en la parte superior del script.
Entonces, si quieres ejecutar PHP deberías haber incluido algo como:
#!/path/to/php
En la parte superior de tu script para que funcione
Probado y verificado para funcionar:
Como mencionó que está usando Webmin, diseñé mi respuesta para Webmin. Puedes hacer esto editando la configuración de Apache a través del shell también.
Notaré que generalmente es preferible editar la configuración de Apache, y en este caso probablemente sea inevitable, ya que no creo que pueda hacer este tipo de edición en .htaccess
. Aunque puede haber un truco con el que no estoy familiarizado, un administrador de servidor probablemente querría mantener esto encerrado dentro de la configuración de Apache. Los pensamientos de los archivos .htaccess
con extensiones de archivos deshonestos volando por directorio no solo suena lento, sino también altamente inseguro.
Pasos
Instalé Apache en Ubuntu 14.04 a través de VirtualBox. Agregué Webmin y FastCGI.
Tomé los siguientes pasos:
- Inicie sesión en Webmin, vaya a su host virtual.
- Haga clic en Editar directivas
- Agregue lo siguiente en la parte inferior:
<Directory />
#Your SetHandler script here
#(@MrTux''s script works here but NOT IN .htaccess)
Require all granted
</Directory>
- Clic en Guardar
- Haga clic en "Aplicar cambios" en la parte superior.
- ¡Terminaste!
Notaré que SetHandler pasa algunos encabezados, por lo que si declaras esto en .htaccess
existe la posibilidad de que los encabezados ya hayan sido enviados, que es lo que está desencadenando tu error. De nuevo, .htaccess
no es la forma preferida de establecer reglas si tiene control sobre su sistema. En este caso, probablemente cause problemas de seguridad de todos modos.