09 Feb Ejecutar php como Apache o como FastCGI
Si has trabajado con aplicaciones como WordPress o Prestashop, que funcionan con Apache y Mysql, y has instalado plugins, temas, etc etc. Es probable que alguna vez te hayas encontrado con que al usar el plugin o módulo te haya dado un error de permisos. A veces se puede solucionar simplemente accediendo por FTP al directorio del plugin, y dándole permisos 777 a los directorios, o a algún fichero concreto. Sin embargo, a veces ocurre que es WordPress, Prestashop u otra aplicación la que crea los ficheros o directorios, y es un usuario distinto al usuario FTP. Es decir, el usuario que ejecuta por ejemplo WordPress es Apache y es distinto al usuario FTP, por lo que los ficheros o directorios que crea Apache no son accesibles al usuario FTP.
En definitiva, esto se puede solucionar cambiando el modo de ejecución de PHP, y en lugar de usar Apache, usar FastCGI. De esta forma cualquier fichero o directorio modificado por la aplicación también podrá ser usado por el usuario FTP y viceversa.
Hay que tener en cuenta que al ser un modo distinto de ejecución de PHP puede que parte de la programación no funcione igual en un modo que en otro, por lo que se recomienda, que si se decide hacer el cambio, se revise exhaustivamente el funcionamiento de la web, para comprobar que todo es correcto.
A continuación describimos los pasos para hacer el cambio:
- Accede a tu panel Plesk
- Haz clic en la pestaña «Sitios web y dominios»
- A continuación, abajo del todo haz clic en tu dominio
- Por último en la sección «Estadísticas y scripting web», donde indica Soporte para PHP, cambiar Módulo Apache por Aplicación FastCGI. No confundir con Aplicación CGI, que es otra opción y tiene peor rendimiento que el FastCGI.
juan
Enviado el 21:32h, 11 octubreY cual de los dos elegirias, en fiabilidad y estabilidad?
gracias
juan
aquihaydominios
Enviado el 21:42h, 11 octubreHola Juan,
ambos modos son fiables y estables, no obstante a la hora de elegir uno u otro se puede pensar en:
– Facilidad de administración (permisos): Mejor FastCGI
– Velocidad de ejecución y consumo de memoria: Mejor Apache
No obstante, FastCGI ha mejorado mucho el tema de la velocidad, y no tiene mucho que envidiarle a Apache. En el tema de consumo de memoria, sí puede haber bastante diferencia, pero no es algo que deba preocuparle a un usuario de un alojamiento web, ya que son los administradores de los servidores los que deben tenerlo en cuenta.
Saludos.
juan
Enviado el 21:44h, 11 octubremuchas gracias!!
aquihaydominios
Enviado el 21:45h, 11 octubreA ti por participar en el blog. Esperamos verte más a menudo por aquí 😉 Saludos
Juanjo
Enviado el 01:56h, 04 diciembreTengo muchisimos errores [warn] mod_fcgid: cleanup zombie process que desbordan la memoria, trabajo con magento en mi VPS,
¿seria conveniente pasar a modo Apache y asi evitarme esos problemas? (he provado una tienda demo en apache y rueda todo perfecto en ella)
aquihaydominios
Enviado el 23:11h, 04 diciembreHola Juanjo,
tanto en apache como en fastCGI una tienda magento debería funcionar correctamente. Bien es cierto que el modo de ejecución de php en apache no tiene porque ser exactamente igual y pueden ocurrir este tipo de cosas, warning o incluso que haya cosas que no funcionen bien en determinadas aplicaciones.
En cualquier caso, si controlas el tema de permisos, puedes usar Apache perfectamente e incluso puede ser recomendable a nivel de permisos, aunque ya haya muy poca diferencia hoy en día con FastCGI.
Saludos.
Juanjo
Enviado el 19:42h, 05 diciembreGracias, la verdad que soy muy novato aun con linux, servidores, etc… soy autodidacta pero leere sobre ello.
aquihaydominios
Enviado el 19:45h, 05 diciembre¡Ánimo! Y si quieres probar en nuestros servidores, tienes un alojamiento web gratis durante 15 días: http://www.aquihaydominios.com/alojamiento-web-gratis-durante-15-dias
Saludos.
Jaime
Enviado el 18:35h, 10 diciembreEl problema con que me he encontrado es que he migrado de un servicio Hosting gestionado por CPANEL a un VPS con parallels.
Hemos migrado una tienda prestashop, pero nos encontramos que al importar una gran cantidad de datos se quedaba frito el servidor. Nuestro administrador del VPS nos dijo que cambiarmos a APACHE pero hemos tenido el problema de crear archivos y no funcionaba asi que volvimos a FastCGI.
¿Como podemos aumentar el tiempo de ejecución en FastCGI? ¿O para que funcione con el modulo apache?
Muchas Gracias.
aquihaydominios
Enviado el 21:11h, 10 diciembreHola Jaime,
¿cómo habéis hecho la importación del Prestashop? ¿En qué momento no responde?
Por otro lado, en el php.ini podéis aumentar el tiempo de respuesta igual que con apache. Otra opción si en apache os funciona la importación, es importar en Prestashop y luego cambiar a FastCGI tras importar. O en Apache darle los permisos necesarios para que funcione correctamente. Probablemente haya muchas opciones distintas de solucionar lo que os ocurre.
Saludos.
Alberto León
Enviado el 12:54h, 12 eneroLos problemas que da plesk con los permisos cuando ejecutas en módulo apache, no son de recibo.
Eso hace que sea impracticable subir imágenes y otros archivos para las entradas de los post.
Es decir, aquí no hablamos de facilidad de administración por parte de FastCGI, si no que no hay alternativa, porque usar módulo Apache hace imposible la subida de archivos desde el panel de administración.
Esto es así por lo que comentas, al ejecutarse el wordpress con el usuario apache, crea carpetas para los post, con los permisos para el usuario apache.
Mientras, la carga de ficheros, la hace el usuario del dominio, que no tiene permisos a carpetas creadas por apache.
Me parece una chapuza por parte de plesk no tener esto bien solucionado.
aquihaydominios
Enviado el 13:05h, 12 eneroHola Alberto,
el tema de permisos no está relacionado con Plesk, ni con otros paneles como cpanel. Hay distintos tipos de ejecución de PHP, por ejemplo como bien comentas Apache y FastCGI, y cada uno tiene sus ventajas e inconvenientes, y como bien dices una de las grandes diferencias es el tratamiento de permisos.
Ocurre que en un sistema linux existen distintos tipos de usuarios que pueden tratar los ficheros y directorios, en el caso de Apache por un lado tenemos el usuario FTP y por otro el usuario de Apache. El tratamiento de seguridad de linux hace que unos usuarios no puedan acceder o modificar los ficheros que han creado otros usuarios, por lo que es lógico, aunque no negamos que molesto y que hay que tener ciertos conocimientos de seguridad de linux, lo que ocurre a veces con CMS como WordPress cuando se ejecutan en modo Apache.
Por todo este tipo de cosas surgió CGI que utilizaba el mismo usuario FTP para ejecutas los ficheros PHP, por lo que evitaba las incompatibilidades de permisos, por hacerlo todo con el mismo usuario. Todo era muy positivo pero CGI era muy lento en comparación con Apache. Por eso surgió FastCGI, que tenía todas las ventajas de CGI en cuanto a permisos, y que era mucho más rápido que CGI, incluso comparable a la rapidez de Apache.
En resumen, es un tema técnicamente complejo, pero que en ningún caso hay que achacar al panel de control, ya sea Plesk o Cpanel o cualquier otro.
Esperamos haberte ayudado.
Saludos.
Francisco
Enviado el 17:00h, 11 junioHola, antes de nada dar las gracias por el tiempo que os tomáis con todas estas explicaciones. Resultan de gran ayuda.
En mi caso he intentado cambiar el modo de ejecución del PHP al modo «fastCGI» pero al hacerlo, aparentemente todo bien, no me guarda los cambios. Es decir, si vuelvo a entrar en el dominio al cual quiero cambiarle dicho parámetro, me sigue mostrando «módulo apache». Lo estoy haciendo sobre un Plesk 11.0.9.
He buscado en internet pero no he encontrado nada al respecto. Sigo los pasos, por otro lado bastante sencillos, y prácticamente iguales a los que vosotros aquí reproducís, pero no me hace nada de nada.
¿sabéis si hay algo especial respecto a esto en dicha versión de Plesk?.
muchas gracias por la ayuda
aquihaydominios
Enviado el 20:21h, 04 septiembreHola Francisco,
perdona por la tardanza. ¿Te sigue ocurriendo? ¿Conseguiste solucionarlo?
Actualmente hay versiones más recientes de Plesk, pero la 11.0.9 es muy extendida y no hay ningún tipo de inconvenientes a la hora de hacer este cambio, por lo que puede estar relacionado con tu servidor en concreto. De todos modos, si has conseguido después de este tipo averiguar algo, te agradeceríamos que lo compartas por si a otro usuario le ha ocurrido lo mismo alguna vez.
Gracias, un saludo.
Marcos
Enviado el 13:53h, 12 septiembreSiii, muchas gracias, al final era un fallo de manejo, es decir, culpa mía. A los clientes les tengo aplicado un plan y en ese plan tienen especificado es PHP y si pongo fastCGI el plan me devuelve a PHP…ese era el problema. Al final he tenido que hacer un plan especifico para aquellas web que requieren fastCGI
Muchísimas gracias por vuestro interés !!!
aquihaydominios
Enviado el 14:42h, 12 septiembreHola Marco,
nos alegra haberte sido de ayuda. Esperamos verte más a menudo por aquí.
Saludos.
paul
Enviado el 05:10h, 22 diciembreHola,
antes de todo les deseo felizes navidades a todos y un prospero año nuevo jejeje,
les queria comentar mi problema, estoy utilizando un hosting con modulo fast cgi no he tenido problemas hasta estos dias, estoy usando wordpress el caso es que la pagina me daba error 504 de time-out nginx y nose si el modulo influenciaria en esto de algun modo.
¿Que decis?
Gracias
aquihaydominios
Enviado el 15:12h, 26 diciembreHola Paúl,
el tiempo de ejecución que tengas configurado en el php.ini es solo para Apache, para FastCGI es distinto, por lo que puede que influya en este caso. De todos modos, puedes igualmente aumentar el tiempo para FastCGI, o si es un lanzamiento de un script en un momento puntual, lo puedes lanzar en Apache y después volver a FastCGI.
Felices fiestas.
Saludos.
Javier Arocena
Enviado el 18:07h, 20 eneroMuy buenas, como ya han comentado por aquí arriba, muchas gracias por la molestia que os tomáis con cada usuario.
Quería comentaros un problema con el que ya no sé que hacer y estoy desesperado.. Tenía mi sitio web funcionando perfectamente en con Apache. Pero tenía problemas para usar la funcion rename(), y poder renombrar archivos, entonces lo pasé a «fastcgi». Funciona todo estupendamente, incluido el renombramiento, menos el redireccionamiento que realizaba el .htaccess. Las url amigables no me las recibe correctamente y me lanza el error «No input file specified.»
Alguna idea?
Muchisimas gracias!
PD: Ejemplo del error: http://www.javierarocena.com/diseno/Cartel+El+pianista
PD2: Phpinfo() disponible en: http://www.javierarocena.com/phpinfo
aquihaydominios
Enviado el 18:14h, 20 eneroHola Javier,
de nada, nos gusta ayudar tanto a nuestros clientes como usuarios. También nos gusta ver como después os ayudáis entre ustedes y todos acabamos aprendiendo cosas.
En cuanto a tu pregunta, si la web ya ha estado funcionando en Apache, habrá creado ficheros cuyo propietario es Apache, por lo que al pasarlo a FastCGI debe también cambiar los propietarios de los ficheros. Desde ssh debes usar el comando chown -R
Si no tienes acceso, debes pedir a tu proveedor que te lo haga.
Saludos.
Javier Arocena
Enviado el 14:59h, 21 eneroMuchas gracias por la velocidad de respuesta, pero sigo sin entender una cosa. Lo de cambiar los privilegios creo que ya lo ha hecho mi proveedor, pero aún así no funciona. Me comentaron que el path cambió y que debía modificar el .htaccess para la nueva redirección…
sabéis algo de eso?
Un saludo!
aquihaydominios
Enviado el 15:08h, 21 eneroHola Javier,
no es lo mismo los privilegios, con el comando chmod, que el propietario, con el comando chown. Pensamos que podría ser eso.
En nuestra opinión no influye el modo de ejecución PHP, ya sea Apache o FastCGI con las urls amigables. Las urls siempre son las mismas. Quizás si podría influir la ruta o path del servidor, que en FastCGI se puede indicar cual es la ruta por defecto, a diferencia de Apache que es siempre la misma, la completa.
Saludos.
Eva Sanz
Enviado el 11:20h, 05 octubreHola,
tenía la aplicación funcionando correctamente con FASCTCGI. El otro día tuve que subir ficheros con tamaño superior a 16M y lei que FASTCGI tenía una limitacion y no permitia subir ficheros superiores. No encontraba el fichero donde estaba esa restriccion por lo que cambie el modo de ejecucion a Apache. Los ficheros se subieron ok.
Como ya he subido esos ficheros he cambiado a FASCTCGI ya que tenía problemas para upload ficheros pequeños por temas de permisos. La aplicacion tiene usuario-contraseña en el index.html, lo introduzco pero no hace efecto, no inicia la sesion y vuelve al Index.html. Si cambio a Apache vuelve a correr…¿?
Agradecería si pueden comentarme como solucionarlo…
Gracias. Un saludo
aquihaydominios
Enviado el 11:36h, 19 octubreHola Eva,
por cambiar a Apache y después a FastCGI de nuevo, no tiene porque dejar de funcionar una aplicación. Por otro lado, en FastCGI también se pueden definir los máximos, por ejemplo el de tamaño de fichero. Ocurre que si lo haces por Plesk, no coge los cambios si ya lo tienes en FastCGI, por lo que se suele hacer el cambio, se pasa a Apache e inmediatamente se pasa a FastCGI y ya coge los cambios que normalmente se guardan en php.ini
En cuanto a que ahora no te funcione algo, por cambiar de modo, debes revisar si se creó algún fichero con Apache y ahora FastCGI no tiene permisos. Hay algunos scripts que se pueden ejecutar desde ssh para solventar esto si eso fuera lo que hace que no te funcione. En caso contrario, habría que mirar con más detenimiento.
Saludos.