<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Apache 2 | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/category/sistemas/apache-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ahierro.es</link>
	<description>Un blog personal  donde compartir experiencias e inquietudes relacionadas con internet, tecnología y otros asuntos interesantes</description>
	<lastBuildDate>Thu, 07 Oct 2021 07:02:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://blog.ahierro.es/wp-content/uploads/2018/10/cropped-logo_small-1-2-32x32.png</url>
	<title>Apache 2 | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Variables de configuración de PHP en .htaccess</title>
		<link>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/</link>
					<comments>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 07:02:49 +0000</pubDate>
				<category><![CDATA[Apache 2]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=2352</guid>

					<description><![CDATA[<p>No siempre disponemos de acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre</p>
La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Al momento de desplegar nuestras aplicaciones web no siempre tenemos acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png" alt="Variables de PHP en htaccess" class="wp-image-2388" srcset="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png 1024w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-300x169.png 300w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-768x432.png 768w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1536x864.png 1536w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess.png 1920w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<span id="more-2352"></span>



<p>Y es que a veces encontraremos que nuestra aplicación tiene unos requisitos mínimos que el servidor no cumple. Pongamos por ejemplo que queremos <a href="https://blog.ahierro.es/instalar-prestashop-1-7/" title="Instalar Prestashop 1.7">instalar prestashop</a> que tiene ciertos <a href="https://blog.ahierro.es/requisitos-minimos-de-prestashop-1-7/" title="Requisitos mínimos de Prestashop 1.7">requisitos mínimos</a> y que por algún motivo nuestro hosting no satisface.</p>



<h2 class="wp-block-heading">Cómo configurar variables de PHP desde .htaccess</h2>



<p>Hay varias formas de actuar sobre estas variables, pero tal y como reza el título de esta entrada hoy vamos a hacerlo con el archivo <em>.htaccess</em>, y para ello utilizaremos la orden <em>php_value</em>. Su sintaxis es muy sencilla<em>:</em></p>



<p><em>php_value</em> + <em>variable_php</em> + <em>valor</em>. </p>



<p>Un ejemplo podría ser que necesitamos que la variable <em>memory_limit</em> esté configurada en 64M y el servidor la tiene configurada en 32M, o quizás el <em>max_input_vars</em> está configurado en 500 y nuestros requisitos mínimos son 1.000. Para ello incluiríamos las siguientes líneas en el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value memory_limit 64M
php_value max_input_vars 1000
</pre></div>


<p>O supongamos que queremos mostrar los errores de PHP de nuestra aplicación. Podemos hacerlo desde el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value error_reporting 7
php_flag display_errors On
</pre></div>


<h2 class="wp-block-heading">Dónde colocar las líneas dentro del archivo .htaccess</h2>



<p>Personalmente me gusta colocar este tipo de sentencias al comienzo del archivo .htaccess, justo detrás de los comentarios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
# Comentarios habituales en archivos .htaccess

# variables php
php_value error_reporting 7
php_flag display_errors On

&amp;lt;IfModule mod_rewrite.c&gt;
&amp;lt;IfModule mod_env.c&gt;
SetEnv HTTP_MOD_REWRITE On
&amp;lt;/IfModule&gt;

RewriteEngine on
...
</pre></div>


<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/">Aumentar el límite de memoria de un script en PHP</a></li><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/">Aumentar el limite de tiempo máximo de ejecución de un script en PHP</a></li><li><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a></li><li><a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y Ubuntu</a></li><li><a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a></li></ul>La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP: mod_php vs CGI vs FastCGI vs FPM</title>
		<link>https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/</link>
					<comments>https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Fri, 11 Oct 2019 07:07:28 +0000</pubDate>
				<category><![CDATA[Apache 2]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1793</guid>

					<description><![CDATA[<p>Existen varias alternativas para conectar el intérprete de PHP con Apache, cada una de ellas con sus ventaja e inconvenientes. Hoy vamos repasar las principales e intentaremos responder a la pregunta de cuál es la más adecuada en función del uso que le vayamos a dar. Estoy seguro de que a muchos de vosotros os &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "PHP: mod_php vs CGI vs FastCGI vs FPM"</span></a></p>
La entrada <a href="https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/">PHP: mod_php vs CGI vs FastCGI vs FPM</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Existen varias alternativas para conectar el intérprete de PHP con Apache, cada una de ellas con sus ventaja e inconvenientes. Hoy vamos repasar las principales e intentaremos responder a la pregunta de cuál es la más adecuada en función del uso que le vayamos a dar.</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/10/alternativas_php-1024x546.jpg" alt="Alternativas Instalación PHP" class="wp-image-1803" width="840" height="448" srcset="https://blog.ahierro.es/wp-content/uploads/2019/10/alternativas_php-1024x546.jpg 1024w, https://blog.ahierro.es/wp-content/uploads/2019/10/alternativas_php-300x160.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2019/10/alternativas_php-768x410.jpg 768w, https://blog.ahierro.es/wp-content/uploads/2019/10/alternativas_php.jpg 1920w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<span id="more-1793"></span>



<p>Estoy seguro de que a muchos de vosotros os suena lo siguiente: te dispones a instalar un servidor web, abres la consola de Linux, instalas Apache, y cuando buscas el paquete de PHP te encuentras que tienes varias opciones: php7.2, php7.2-cgi, php7.2-fpm o libphp7.2-embed. Dudas sobre cual elegir pero no tienes tiempo o ganas de investigar, sabes que el paquete php7.2 funcionará con total seguridad, así que lo instalas y continuas con la siguiente tarea.</p>



<p>Si has vivido esta situación, no te sientas culpable, no tengas remordimientos de conciencia, no estás solo, somos muchos los que hemos actuado así, pero sigue leyendo y la próxima vez podrás elegir la mejor opción para tus necesidades.</p>



<h2 class="wp-block-heading">Handlers en Apache</h2>



<p>Según la web de Apache, un handler es «una representación interna de Apache de una acción que se va a ejecutar cuando hay una llamada a un fichero», y continua «Generalmente, los ficheros tienen handlers implícitos, basados en el tipo de fichero de que se trata». Esto, traducido al cristiano y llevado al ámbito de PHP significa que cuando Apache detecta un fichero PHP hará uso de los handlers para conectar con el intérprete y que éste realice las tares  oportunas.</p>





<h2 class="wp-block-heading">Handlers para PHP</h2>



<p>Ya sabemos que es un handler, repasemos ahora las principales opciones existente para que Apache pueda interpretar los archivos PHP.</p>



<h3 class="wp-block-heading">DSO ó mod_php</h3>



<p>Probablemente habrás escuchado hablar de mod_php pero quizás no de DSO. Mod_php es como se conoce comúnmente al manejador DSO (Dynamic Shared Object).</p>



<p>Es la opción más habitual en entornos de desarrollo o locales, si buscamos en internet como instalar PHP sobre Apache en Linux la  mayoría de resultados nos propondrán este sistema, y para muestra un  botón: <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a>.</p>



<p>Con mod_php el intérprete de PHP es ejecutado directamente por Apache como un módulo, lo que evita tener que realizar llamadas a procesos externos. Esto es una ventaja en cuanto que la comunicación entre ambos es muy ágil y nos permite obtener un gran rendimiento.</p>



<p>Otra característica de este sistema es que el intérprete PHP es cargado al arrancar cada proceso de Apache, incluso cuando el contenido a servir no contiene código PHP alguno. Este hecho provoca que obtengamos un mejor rendimiento en detrimento del consumo de recursos del sistema, convirtiéndolo en una mala opción para sites con mucho tráfico.</p>



<p>También es importante destacar que PHP hereda los permisos del usuario de Apache. Esto implica que <em>nobody</em> será el propietario de cualquier archivo creado por PHP, pudiendo generar algunos conflictos de permisos. No obstante con una mínima configuración podemos evitar este problema, podéis ver como hacerlo en el artículo <a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a>.</p>



<h4 class="wp-block-heading">Ventajas de DSO</h4>



<ul class="wp-block-list"><li>Fácil instalación y configuración.</li><li>Buen rendimiento.</li></ul>



<h4 class="wp-block-heading">Inconvenientes de DSO</h4>



<ul class="wp-block-list"><li>Alto consumo de recursos.</li><li>Los archivos creados por PHP pertenecen a Apache.</li></ul>



<h3 class="wp-block-heading">CGI</h3>



<p>CGI son las siglas de Common Getway Interface. Como su propio nombre indica es una interface y su cometido es permitir a Apache interactuar con programas externos, en este caso con PHP. Es un sistema que prácticamente podemos denominar como legacy y está cada vez más en desuso debido a su pobre rendimiento y a la existencia de alternativas más modernas y eficientes.</p>



<p>Al utilizar esta interface, cada petición de PHP inicia un proceso independiente que es finalizado cuando concluye su labor. Este modus operandi consigue que CGI sea muy eficiente en el consumo de memoria pero pobre en rendimiento. En sitios web con alto tráfico el sistema de creación y destrucción de procesos implica un uso de procesador demasiado elevado, por lo que no es nada recomendable para este tipo de sites.</p>





<p>Y al igual que con DSO, Apache será el propietario de lo archivos que generemos o subamos al servidor haciendo uso de PHP, pero ya hemos visto que este problema tiene fácil solución.</p>



<h4 class="wp-block-heading">Ventajas de CGI</h4>



<ul class="wp-block-list"><li>Fácil de instalar y configurar.</li><li>Consumo de recursos moderado en sites con poco tráfico.</li></ul>



<h4 class="wp-block-heading">Inconvenientes de CGI</h4>



<ul class="wp-block-list"><li>Rendimiento pobre.</li><li>Alto consumo de procesador en sites con tráfico elevado.</li><li>Los archivos creados por PHP pertenecen a Apache.</li></ul>



<h3 class="wp-block-heading">FastCGI</h3>



<p>Podemos decir que FastCGI es la evolución de CGI, y surge por la necesidad disponer de un sistema con las ventaja de Common Getway Interface pero minimizando sus inconvenientes.</p>



<p>Al contrario que CGI, FastCGI mantiene la sesión abierta de forma persistente y no la cierra una vez que ha concluido el proceso por el que la abrió. Con esto se consigue un rendimiento similar a DSO a costa de elevar el consumo de memoria pero manteniéndolo por debajo de éste.</p>



<p>Una gran ventaja de FastCGI es que podemos configurar nuestro servidor para que trabaje con múltiples versions de PHP, lo que es particularmente útil cuando en una misma máquina tenemos aplicaciones que requieren versiones distintas de PHP.</p>



<p>Otra característica muy interesante es que podemos separar el host dónde corre Apache del host qué interpreta PHP, ofreciéndonos una gran versatilidad en el diseño de nuestro sistema.</p>



<p>Por último y haciendo referencia al propietario de los archivos creados por PHP, FastCGI hace uso de suEXEC para permitir definir la propiedad de los archivos. Esto es particularmente útil en entornos compartidos dónde es posible configurar distintos propietarios para distintos sites</p>



<h4 class="wp-block-heading">Ventajas de FastCGI</h4>



<ul class="wp-block-list"><li>Buen rendimiento.</li><li>Consumo de recursos moderado.</li><li>Posibilidad de ejecutar Apache y PHP en distintos hosts.</li><li>Posibilidad de trabajar con distintas versiones de PHP.</li><li>Posibilidad de definir el propietario de los archivos.</li></ul>



<h4 class="wp-block-heading">Inconvenientes de FastCGI</h4>



<ul class="wp-block-list"><li>Mayor complejidad de configuración.</li></ul>



<h3 class="wp-block-heading">FPM</h3>



<p>FPM o FastCGI Process Manager ha sido el último en llegar, y no es más que una implementación de FastCGI con varias características orientadas a la mejora del comportamiento para  sitios web con mucho tráfico.</p>



<p>Cómo la diferencia entre FastCGI y FPM comienzan  a adentrarse en un terreno muy técnico, no entraremos en mucho detalle, ero si mencionaremos algunas de estas mejoras:</p>



<ul class="wp-block-list"><li>Manejo avanzado para detener/arrancar procesos de forma fácil.</li><li>Posibilidad de iniciar hilos de procesos con diferentes uid/gid/chroot/environment.</li><li>Escuchar en diferentes puertos.</li><li>Usar distintos php.ini</li><li>Uso de safe_mode.</li></ul>



<p>Si quieres ver la lista completa de estas ventajas puedes hacerlo en la página dedicada a <a href="https://www.php.net/manual/es/install.fpm.php" target="_blank" rel="noreferrer noopener" aria-label="FPM en php.net (abre en una nueva pestaña)">FPM en php.net</a>.</p>



<h4 class="wp-block-heading">Ventajas de FPM</h4>



<ul class="wp-block-list"><li>Buen rendimiento.</li><li>Consumo de recursos moderado.</li><li>Todas las ventajas de FastCGI.</li><li>Más opciones de configuración que FastCGI.</li></ul>



<h4 class="wp-block-heading">Inconvenientes de FPM</h4>



<ul class="wp-block-list"><li>Mayor dificultad de instalación y configuración.</li></ul>



<h2 class="wp-block-heading">Tabla comparativa</h2>



<p>Para intentar ser prácticos, podemos resumir lo que hemos visto en una tabla comparativa, que si bien carece de muchos matices puede darnos una visión bastante clara con tan solo un vistazo.</p>



<figure class="wp-block-table"><table><tbody><tr><th></th><th>DSO</th><th>CGI</th><th>FastCGI</th><th>FPM</th></tr><tr><th>Rendimiento</th><td>Bueno</td><td>Malo</td><td>Bueno</td><td>Bueno</td></tr><tr><th>Consumo de recursos</th><td>Alto</td><td>Medio-Alto</td><td>Medio</td><td>Medio</td></tr><tr><th>Archivos propiedad de Apache</th><td>Si</td><td>Si</td><td>No</td><td>No</td></tr><tr><th>Dificultad de configuración</th><td>Baja</td><td>Baja</td><td>Alta</td><td>Alta</td></tr><tr><th>Opciones de configuración</th><td>Media</td><td>Media</td><td>Alta</td><td>Muy Alta</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">mod_php, CGI, FastCGI ó FPM, cuál es mejor?</h2>



<p>Y la respuesta que muchos esperaréis después de leer (o no) esta entrada es: cuál es mejor? Y la respuesta más habitual a este tipo de preguntas es: para qué?</p>





<p>Para entornos de desarrollo, entornos de prueba o para pequeñas intranets sin excesiva carga recomendaría DSO. Es fácil de configurar, rinde bien y no tendremos problemas de recursos. El único motivo por el que me decantaría por otra opción sería si necesitáramos tener más de una versión de php corriendo en la misma máquina. En tal caso la opción más apropiada sería FastCGI.</p>



<p>Si nos vamos al lado opuesto, sites con muchísimo tráfico, dónde confieso que no tengo ninguna experiencia, parece que la mejor opción es FPM, por: rendimiento, consumo de recursos y versatilidad.</p>



<p>Y entre el espacio que dejan las dos situaciones propuestas es quizás dónde mejor encajaría FastCGI, asumiendo que los motivos que influyen en la decisión última no permiten trazar líneas delimitadoras claras y recomendar hasta aquí esta opción y a partir de aquí la otra. En su lugar nos dejan una amplia gama de grises en función de las características del entorno.</p>



<p class="has-text-align-left">Para acabar, personalmente intentaría no utilizaría CGI, pues no encuentro ninguna característica diferenciadora que compense el peor rendimiento y mayor consumo de recursos.</p>



<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li>Imagen de portada por <a rel="noreferrer noopener" aria-label="Arek Socha (abre en una nueva pestaña)" href="https://blog.ahierro.es/wp-admin/post.php?post=1793&amp;action=edit" target="_blank">Arek Socha</a> en pixabay.</li><li><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a>.</li><li><a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a>.</li><li><a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a>.</li><li><a rel="noreferrer noopener" aria-label="Handlers en Apache (abre en una nueva pestaña)" href="https://httpd.apache.org/docs/2.4/es/handler.html" target="_blank">Handlers en Apache</a>.</li><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="http://www.ietf.org/rfc/rfc3875" target="_blank">RFC de Common Gateway Interface</a>.</li></ul>



<p></p>La entrada <a href="https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/">PHP: mod_php vs CGI vs FastCGI vs FPM</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/php-mod_php-vs-cgi-vs-fastcgi-vs-fpm/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
