<?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># rm-rf.es &#187; Php</title>
	<atom:link href="http://rm-rf.es/categoria/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://rm-rf.es</link>
	<description>Administración de sistemas, Unix, Linux, FreeBSD, Windows, hosting, dominios, servidores...</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>10 trucos para securizar PHP</title>
		<link>http://rm-rf.es/10-trucos-para-securizar-php/</link>
		<comments>http://rm-rf.es/10-trucos-para-securizar-php/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 09:07:58 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2308</guid>
		<description><![CDATA[En esta entrada vamos a ver unos cuantos puntos que nos servirán para securizar PHP en nuestro servidor web. Nos centramos en la configuración propia de PHP, hay que tener en cuenta que la securización de la capa aplicación es tanto o más importante que la de la configuración del servidor. Hay que tener siempre [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" class=" size-thumbnail wp-image-1651" style="margin-left: 10px; margin-right: 10px;" title="php 5.3.6" src="http://rm-rf.es/wp-content/uploads/2011/03/php-150x150.jpg" alt="php 5.3.6" width="150" height="150" /></p>
<p>En esta entrada vamos a ver unos cuantos puntos que nos servirán para <strong>securizar PHP en nuestro servidor web</strong>. Nos centramos en la configuración propia de PHP, hay que tener en cuenta que <strong>la securización de la capa aplicación es tanto o más importante que la de la configuración del servidor</strong>. Hay que tener siempre actualizados a la última versión estable y con los parches de seguridad correctamente aplicados cualquier cms o script de terceros tipo WordPress, Joomla, Oscommerce, etc.</p>
<h3>Ocultar la versión de PHP</h3>
<p>En su día hice un artículo completo sobre esto, podéis verlo aquí (<a title="Ocultar la versión de PHP" href="http://rm-rf.es/ocultar-la-version-de-php/">ocultar la versión de PHP</a>). Básicamente evitamos que con un simple telnet puedan averiguar la versión de PHP que hay corriendo en el servidor:</p>
<pre># telnet servidor 80

Connected to xxx.com (xx.xx.xx.xx).
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 13 Aug 2010 14:18:09 GMT
Server: Apache/1.3.26 (Unix) mod_gzip/1.3.26.1a PHP/5.3.3
Last-Modified: Fri, 12 Feb 2010 12:22:56 GMT
ETag: "44967c-6f-53ca4800"
Accept-Ranges: bytes
Content-Length: 111
Connection: close
Content-Type: text/html

Connection closed by foreign host.</pre>
<p>Para evitar esto cambiamos a off la siguiente variable en el fichero de configuración general <strong>php.ini</strong>:</p>
<pre>expose_php Off</pre>
<h3>Deshabilitar funciones peligrosas</h3>
<p>También hice un artículo hace un tiempo: <a title="PHP: Deshabilitar funciones peligrosas" href="http://rm-rf.es/php-deshabilitar-funciones-peligrosas/">PHP: Deshabilitar funciones peligrosas</a>. Existen funciones que en servidores con aplicaciones estándar rara vez se usan, pero que por contra pueden generar graves problemas de seguridad si el atacante consigue utilizarlas. Es preferible desactivar el mayor número posible y en caso de que una de ellas sea necesario valorar su activación o proponer alternativas.</p>
<p>Las funciones a deshabilitar se añaden en la directiva &#8220;disable_functions&#8221; en el fichero php.ini. Aquí tenéis un ejemplo con funciones peligrosas que conviene desactivar:</p>
<p>disable_functions = &#8220;apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode&#8221;</p>
<p>O un ejemplo más conservador:</p>
<pre>disable_functions ="system,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,pcntl_exec"</pre>
<h3>deshabilitar session ID en URL</h3>
<p>Si queremos que las URL’s de nuestros sitios PHP no muestren los ID de sesiones:</p>
<pre>http://ejemplo.com/?PHPSESSID=4kgj577sgabvnmhjgkdiuy1956if6ska</pre>
<p>Modificamos la directiva siguiente en el fichero php.ini:</p>
<pre>session.use_trans_sid = off</pre>
<h3>Deshabilitar register_globals</h3>
<p>Pese a ser una directiva antigua y que se encuentra en periodo de extinción todavía quedan desarrolladores/programadores que la utilizan. Esta función permite al atacante manipular cualquier variable global definida en la programación. Por defecto está deshabilitada en las versiones actuales de PHP, pero conviene revisarlo por si en algún momento se ha activado:</p>
<pre>register_globals = Off</pre>
<h3>Desactivar acceso a URL remotas en funciones de manejo de ficheros</h3>
<p>Funciones como include, fopen o file_get_contents permiten, además de hacer llamadas a ficheros locales, llamar a ficheros vía URL, esto puede provocar graves errores de seguridad invocando a scripts maliciosos que se encuentran fuera de nuestro servidor y su ejecución remota.</p>
<p>Para deshabilitarlo modificamos la directiva allow_url_fopen a Off en el php.ini:</p>
<pre>allow_url_fopen = Off</pre>
<h3>Evitar el acceso a la información de PHP</h3>
<p>Como ya sabéis con un simple script como el siguiente podemos ver vía URL toda la información de PHP, su compilación, sus módulos activados, versión, directivas de configuración, etc.</p>
<pre>&lt;? phpinfo() ?&gt;</pre>
<p>Si queremos desactivarlo, únicamente hay que modificar a Off la siguiente directiva en el fichero php.ini:</p>
<pre>expose_php = Off</pre>
<p>Si en algún momento necesitáis conocer alguna información, siempre podéis averiguarla desde línea de comandos: <a title="Información sobre PHP desde línea de comandos" href="http://rm-rf.es/informacion-php-linea-comandos/">información sobre PHP desde línea de comandos</a></p>
<h3>Safe Mode</h3>
<pre>safe_mode = On</pre>
<p>Si bien por defecto safe_mode On puede significar una restricción demasiado fuerte en determinados entornos, puede ayudar mucho a incrementar la seguridad de nuestro servidor. Activar safe_mode implica que <strong>los scripts PHP únicamente pueden acceder a los ficheros que tienen como propietario el mismo que ellos</strong>. De este modo evitamos por ejemplo que tengan acceso de lectura a ficheros de sistema como /etc/passwd entre otros.</p>
<p>Efectivamente, esto puede ser un problema en el momento que necesitamos acceder a información generada por otros usuarios en el sistema (ficheros de otras aplicaciones. La solución es la siguiente:</p>
<pre>safe_mode = Off
safe_mode_gid = On</pre>
<p>Activamos safe_mode_gid en lugar de safe_mode, de modo que <strong>en lugar de revisar el usuario se revisa el grupo</strong>. Independientemente del UID del fichero, necesitaremos que estar dentro del grupo para poder acceder al ficheros. El grupo del script PHP deberá ser el mismo que el del fichero a acceder.</p>
<p>Otro punto a tener en cuenta con safe_mode es que no podremos ejecutar binarios. Únicamente aquellos que ubiquemos en el directorio especificado en la configuración:</p>
<pre>safe_mode_exec_dir = /directorio</pre>
<p>Esto se solaparía con las funciones deshabilitadas anteriormente, como por ejemplo system() o exec().</p>
<h3>open_basedir</h3>
<pre>open_basedir = /directorio</pre>
<p>La directiva open_basedir permite configurar que PHP pueda acceder únicamente a los ficheros de un único directorio (y sus subdirectorios). Es una buena forma de enjaular PHP si realmente sólo necesitamos que acceda a un determinado directorio.</p>
<h3>Visualización y registro de errores</h3>
<pre>display_errors = Off
log_errors = On
error_log = /ruta/fichero/log</pre>
<p>Con estas tres directivas, evitamos que cualquier error o warning se muestre por pantalla y hacemos que se registren directamente en un log especificado. De este modo podemos evitar que se muestre información sensible por pantalla. También podéis hacer uso de la directiva <strong>error_reporting</strong> si queréis mostrar por pantalla los errores. Con ella podéis especificar que se muestren únicamente los warning, los notice o lo que queráis.</p>
<h3>SQL Injection</h3>
<p>En su día se utilizaba magic_quotes para limpiar los datos de entrada de un script PHP, pero es una directiva obsoleta a partir de PHP 5.3 así que no merece la pena hablar de ella. En su defecto, si usáis servidor web Apache, os recomiendo encarecidamente configurar <a title="Instalación y configuración de Mod_Security" href="http://rm-rf.es/instalacion-y-configuracion-de-mod_security/">mod_security</a> y habilitar sus reglas que permiten detectar y parar una gran cantidad de ataques de este tipo, y sino, puedes crear tus propias reglas.</p>
<p>Como último apunte, conviene siempre si es posible mantener una versión estable de PHP, libre de bugs y fallos de seguridad. Seguro además que una vez aplicados estos trucos os toca lidiar con los programadores. Se quejarán de algo seguro ;)</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/ocultar-la-version-de-php/" title="Ocultar la versión de PHP">Ocultar la versión de PHP</a></li><li><a href="http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/" title="Encriptar un filesystem con LUKS y cryptsetup">Encriptar un filesystem con LUKS y cryptsetup</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/10-trucos-para-securizar-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</title>
		<link>http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/</link>
		<comments>http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 10:09:00 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Oracle iPlanet Web Server]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2305</guid>
		<description><![CDATA[En el artículo anterior veíamos cómo activar PHP en Oracle iPlanet Web Server bajo Solaris. Una vez activado a la hora de verificar el funcionamiento de un script PHP podéis encontrar lo siguiente al acceder vía URL: Stub Start Error This server has encountered an internal error which prevents it from fulfilling your request. The [...]]]></description>
			<content:encoded><![CDATA[<p>En el artículo anterior veíamos cómo <a title="Configurar PHP + FastCGI en Oracle iPlanet Web Server" href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" target="_blank">activar PHP en Oracle iPlanet Web Server bajo Solaris</a>. Una vez activado a la hora de verificar el funcionamiento de un script PHP podéis encontrar lo siguiente al acceder vía URL:</p>
<p><strong>Stub Start Error<br />
This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server&#8217;s error log.</strong></p>
<p>Y al revisar los logs de error de la instancia vemos lo siguiente:</p>
<pre>[12/Oct/2011:10:13:28] failure ( 1023): for host 192.168.1.128 trying to GET /test.php, responder-fastcgi reports: FCGI1058: Process creation failure
[12/Oct/2011:10:13:43] failure ( 1023): for host 192.168.1.128 trying to GET /test.php, responder-fastcgi reports: FCGI1058: Process creation failure</pre>
<p>El servidor web no es capaz de lanzar los procesos fastcgi de php, esto lo podemos ver porque ni siquiera se crea el log de fastcgi (Fastcgistub.log). Según he visto en este <a href="https://forums.oracle.com/forums/thread.jspa?messageID=8262798" target="_blank">post</a> de un foro es un problema común en máquinas con <strong>poca memoria swap configurada</strong>. En mi caso estaba claro porque esta prueba estaba siendo realizada sobre una pequeña máquina virtual. La solución es tan simple como aumentar el tamaño del area de intercambio o añadir más. Si no os apetece tocar la swap actual porque está en uso podéis añadir una nueva con zfs:</p>
<pre># zfs create -V 1G rpool/swap-extra
# swap -a /dev/zvol/dsk/rpool/swap-extra
# swap -l
swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 171,2         8  1048568  1048568
/dev/zvol/dsk/rpool/swap-extra 171,3         8   819192   819192</pre>
<p>Una vez activada la nueva swap los procesos FastCGI deberían arrancar sin problemas y ejecutar los PHP sin errores.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li><li><a href="http://rm-rf.es/gestion-de-snapshots-en-zfs/" title="Gestión de snapshots en ZFS">Gestión de snapshots en ZFS</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar PHP + FastCGI en Oracle iPlanet Web Server</title>
		<link>http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/</link>
		<comments>http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 09:59:37 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Oracle iPlanet Web Server]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2300</guid>
		<description><![CDATA[A través del sitio web de soporte de Oracle (https://support.oracle.com) podemos descargar el patch de PHP 5.2.X disponible para la versión de Oracle iPlanet Web Server que tengamos instalada, en este caso para la 7.0.12. sobre Solaris. Este parche nos va a permitir activar PHP con FastCGI a modo de plugin del web server. Una [...]]]></description>
			<content:encoded><![CDATA[<p>A través del sitio web de soporte de Oracle (https://support.oracle.com) podemos descargar el <strong>patch de PHP 5.2.X disponible para la versión de Oracle iPlanet Web Server</strong> que tengamos instalada, en este caso para la 7.0.12. sobre <strong>Solaris</strong>. Este parche nos va a permitir <strong>activar PHP con FastCGI a modo de plugin</strong> del web server.</p>
<p>Una vez bajado el patch (p12680045_10000_Generic.zip en mi caso), procedemos a descomprimirlo y copiar la carpeta &#8220;php&#8221; resultante al directorio plugins en la ruta donde hayamos instalado el servidor web:</p>
<pre># cp -Rp /var/tmp/php /opt/iplanet-webserver7/plugins/</pre>
<p>Exportamos la variable LD_LIBRARY_PATH con la ruta hacia este directorio:</p>
<pre># export LD_LIBRARY_PATH=/opt/iplanet-webserver7/plugins/php</pre>
<p>Ahora, podemos hacer una verificación de que php funciona desde línea de comandos:</p>
<pre># cd /opt/iplanet-webserver7/plugins/php/bin &amp;&amp; ./php -v
PHP 5.2.X (cgi-fcgi) (built: Jan XX XXXX 22:31:04)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2011 Zend Technologies</pre>
<p>Llegado este punto, únicamente tendríamos que activar php para la instancia en la que queramos usarlo, en este caso en la instancia https-website. Para ello haremos uso del script <strong>setupPHP</strong> disponible en el directorio &#8220;php&#8221;:</p>
<pre># cd /opt/webserver7/plugins/php/
# ./setupPHP -instancename=https-website

UPDATED: /opt/iplanet-webserver7/https-www/config/magnus.conf
UPDATED: /opt/iplanet-webserver7/https-www/config/obj.conf
UPDATED: /opt/iplanet-webserver7/https-www/config/mime.types</pre>
<p>Como veis en la salida del comando, automáticamente se han actualizado los ficheros de configuración de la instancia, añadiendo los handler de php, las configuraciones y directivas de FastCGI, etc.</p>
<p>Si utilizáis un usuario distinto de root para correr el servidor web, aseguraos de que los propietarios de los tres ficheros anteriores se mantienen bien, sino <strong>no arrancará la instancia</strong>.</p>
<p>Ya solo quedaría<strong> hacer el pull-config con los nuevos cambios de configuración de la instancia y el deploy</strong>. Podemos hacerlo a través de la <strong>interfaz web de administración</strong> de iPlanet Web Server o desde línea de comandos con <strong>wadm</strong>:</p>
<pre># /opt/iplanet-webserver7/bin/wadm [--user=admin-user] [--password-file=admin-pswd-file] [--host=admin-host] [--port=admin-port]
pull-config --config=www nodo
pull-config --config=website hostname
deploy-config website</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li><li><a href="http://rm-rf.es/gestion-de-snapshots-en-zfs/" title="Gestión de snapshots en ZFS">Gestión de snapshots en ZFS</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache: servir PHP usando extensión HTML</title>
		<link>http://rm-rf.es/apache-servir-php-usando-extension-html/</link>
		<comments>http://rm-rf.es/apache-servir-php-usando-extension-html/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 15:10:59 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2141</guid>
		<description><![CDATA[Existe la posibilidad de que queramos introducir código PHP dentro de ficheros estáticos (.html, .htm&#8230;), de modo que al servir la página a través del navegador dicho código php se ejecute en lugar de mostrarse como texto plano. Este truco valdría tanto para cualquier otra extensión (cgi por ejemplo). Para realizar esta configuración, debemos utilizar [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2132" style="margin-left: 20px; margin-right: 20px;" title="Apache" src="http://rm-rf.es/wp-content/uploads/2011/08/apache.jpg" alt="Apache" align="right" />Existe la posibilidad de que queramos<strong> introducir código PHP dentro de ficheros estáticos (.html, .htm&#8230;)</strong>, de modo que al servir la página a través del navegador dicho código php se ejecute en lugar de mostrarse como texto plano. Este truco valdría tanto para cualquier otra extensión (cgi por ejemplo).</p>
<p>Para realizar esta configuración, debemos utilizar la directiva <a href="http://httpd.apache.org/docs/current/mod/mod_mime.html#addtype" target="_blank"><strong>AddType</strong></a> en el fichero <a title="htaccess" href="http://rm-rf.es/sobre/htaccess"><strong>.htaccess</strong></a> del website o directamente a nivel general del servidor web en el fichero <strong>httpd.conf</strong>.</p>
<p>Lo primero que debemos verificar es que tenemos cargado en Apache el <strong>módulo mod_mime</strong>, que es el encargado de servir la directiva AddType.</p>
<pre># httpd -l | grep mime
  mod_mime.c</pre>
<p>Una vez verificado, si quisieramos <strong>mapear las extensiones .html para servir contenido PHP</strong>, deberíamos añadir la siguiente directiva al fichero .htaccess:</p>
<pre>AddType application/x-httpd-php .php .htm .html .shtml</pre>
<p>Si tuvierais varias versiones de PHP instaladas en un mismo servidor, es posible que necesitéis especificar la versión del siguiente modo:</p>
<pre>AddType application/x-httpd-php5 .php .htm .html .shtml</pre>
<p>o</p>
<pre>AddType application/x-httpd-php4 .php .htm .html .shtml</pre>
<p>Esto lo podemos añadir también a nivel general en Apache, ya sea directamente en el httpd.conf o en el fichero php.conf junto con el resto de configuraciones de PHP. Si lo añadimos en httpd.conf reiniciamos el servicio tras hacerlo:</p>
<pre># /etc/init.d/httpd graceful</pre>
<p>Ahora, si hacemos un fichero test.html con el siguiente contenido, al servirlo en el navegador web ejecutará el código PHP en lugar de mostrarlo como si fuera html puro y duro:</p>
<pre>&lt;h1&gt;Prueba ejecutar PHP en fichero HTML&lt;/h1&gt;
&lt;? phpinfo ?&gt;</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/utilizar-htaccess-phpini-en-apache-con-suphp/" title="Utilizar .htaccess / php.ini en Apache con suPHP">Utilizar .htaccess / php.ini en Apache con suPHP</a></li><li><a href="http://rm-rf.es/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/apache-servir-php-usando-extension-html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pecl: configure: error: cannot run C compiled programs</title>
		<link>http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/</link>
		<comments>http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/#comments</comments>
		<pubDate>Mon, 09 May 2011 14:36:30 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[compilador]]></category>
		<category><![CDATA[pecl]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1788</guid>
		<description><![CDATA[El error que podemos recibir al instalar un módulo de PHP (concretamente Oauth) a través de pecl es el siguiente: # pecl install -R /usr/lib/php oauth WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading oauth-1.1.0.tgz ... Starting to download oauth-1.1.0.tgz (44,731 bytes) ............done: 44,731 bytes 6 source files, building [...]]]></description>
			<content:encoded><![CDATA[<p>El error que podemos recibir al instalar un módulo de PHP (concretamente <a title="Instalar módulo OAuth de PHP en cPanel/WHM" href="http://rm-rf.es/instalar-modulo-oauth-de-php-en-cpanelwhm/">Oauth</a>) a través de <strong>pecl</strong> es el siguiente:</p>
<pre># pecl install -R /usr/lib/php oauth
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading oauth-1.1.0.tgz ...
Starting to download oauth-1.1.0.tgz (44,731 bytes)
............done: 44,731 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
building in /var/tmp/pear-build-root/oauth-1.1.0
running: /usr/lib/php/root/tmp/pear/oauth/configure
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking for C compiler default output file name... a.out
<strong>checking whether the C compiler works... configure: error: cannot run C compiled programs.</strong>
If you meant to cross compile, use `--host'.
See `config.log' for more details.
ERROR: `/usr/lib/php/root/tmp/pear/oauth/configure' failed</pre>
<p>El error nos indica que no podemos ejecutar la compilación, en este caso es debido a que <strong>tenemos securizada la partición /tmp</strong> y no permitimos la ejecución en ella, pecl compila ahí de forma temporal el módulo.</p>
<pre># mount | grep ^/tmp
/tmp on /var/tmp type ext3 (rw,noexec,nosuid,bind)</pre>
<p>Lo que vamos a hacer es una solución temporal, montamos /tmp con los requerimientos para poder hacer la compilación y después revertimos el cambio:</p>
<pre># mount -o remount,exec,suid /tmp
# pecl install -R /usr/lib/php oauth
# mount -o rw,noexec,nosuid,bind /tmp</pre>
<p>Otra opción más segura y que evita tener que modificar el sistema de archivos /tmp es la que <a href="http://woop.es/">Santi</a> nos ofrece en su comentario, exportamos la variable TMP a un lugar dentro de una partición con exec permitido e instalamos:</p>
<pre># mkdir -p /root/temporal
# export TMP=/root/temporal
# pecl install oauth</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/configure-error-libpng-aso-not-found-compilando-php-con-64-bits/" title="configure: error: libpng.(a|so) not found (compilando PHP con 64 bits)">configure: error: libpng.(a|so) not found (compilando PHP con 64 bits)</a></li><li><a href="http://rm-rf.es/como-compilar-apache-php-linux/" title="Cómo compilar Apache y PHP en Linux">Cómo compilar Apache y PHP en Linux</a></li><li><a href="http://rm-rf.es/instalar-modulo-oauth-de-php-en-cpanelwhm/" title="Instalar módulo OAuth de PHP en cPanel/WHM">Instalar módulo OAuth de PHP en cPanel/WHM</a></li><li><a href="http://rm-rf.es/db_file-xs101-db-h-no-such-file-or-directory/" title="DB_File.xs:101: db.h: No such file or directory">DB_File.xs:101: db.h: No such file or directory</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>configure: error: libpng.(a&#124;so) not found (compilando PHP con 64 bits)</title>
		<link>http://rm-rf.es/configure-error-libpng-aso-not-found-compilando-php-con-64-bits/</link>
		<comments>http://rm-rf.es/configure-error-libpng-aso-not-found-compilando-php-con-64-bits/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 18:55:57 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[compilador]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1675</guid>
		<description><![CDATA[Una entrada rápida para ayudar a aquellos que reciban este error (configure: error: libpng.(a&#124;so) not found) a la hora de configurar la compilación de PHP en un servidor con arquitectura de 64 bits. El error aparecerá cuando añadimos el módulo de librerías GD a la compilación ( --with-gd ). Lo primero que tenemos que hacer [...]]]></description>
			<content:encoded><![CDATA[<p>Una entrada rápida para ayudar a aquellos que reciban este error (<strong>configure: error: libpng.(a|so) not found</strong>) a la hora de configurar la <a title="Cómo compilar Apache y PHP en Linux" href="http://rm-rf.es/como-compilar-apache-php-linux/">compilación de PHP</a> en un servidor con arquitectura de <strong>64 bits</strong>. El error aparecerá cuando añadimos el módulo de <strong>librerías GD</strong> a la compilación (</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--with-gd</div></div>
<p>). Lo primero que tenemos que hacer es verificar que tenemos instalados los paquetes devel de <strong>libpng y libjpeg</strong>. Podéis instalarlos por apt o yum según la distribución:</p>
<pre>$ yum install libpng-devel.x86_64
$ yum install libjpeg-devel.x86_64</pre>
<p><em>Nota: quizás también sea necesario instalar el devel de GD, ahora no lo recuerdo.</em></p>
<p>Si pese a instalar estos paquetes seguís recibiendo el mismo error, probablemente es porque a la hora de hacer el configure no encuentra el lugar donde están las librerías (por ser de 64 bits). Entonces la solución será especificar que es un sistema de 64 bits y sus librerías con el parámetro</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--with-libdir=lib64</div></div>
<p>Quedaría algo así (+ los módulos que instaléis además de GD):</p>
<pre>$ ./configure --with-gd --with-libdir=lib64</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/" title="pecl: configure: error: cannot run C compiled programs">pecl: configure: error: cannot run C compiled programs</a></li><li><a href="http://rm-rf.es/como-compilar-apache-php-linux/" title="Cómo compilar Apache y PHP en Linux">Cómo compilar Apache y PHP en Linux</a></li><li><a href="http://rm-rf.es/db_file-xs101-db-h-no-such-file-or-directory/" title="DB_File.xs:101: db.h: No such file or directory">DB_File.xs:101: db.h: No such file or directory</a></li><li><a href="http://rm-rf.es/elegir-el-compilador-correcto-para-perl-en-solaris/" title="Elegir el compilador correcto para Perl en Solaris">Elegir el compilador correcto para Perl en Solaris</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/configure-error-libpng-aso-not-found-compilando-php-con-64-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo compilar Apache y PHP en Linux</title>
		<link>http://rm-rf.es/como-compilar-apache-php-linux/</link>
		<comments>http://rm-rf.es/como-compilar-apache-php-linux/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 16:53:45 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[compilador]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1641</guid>
		<description><![CDATA[En este artículo voy a explicar los pasos básicos para compilar Apache y PHP (con soporte para MySQL y otros módulos) en GNU/Linux, concretamente bajo RHEL, aunque se puede aplicar a cualquier distribución (CentOS, Fedora, Debian, etc). Lo primero que tenemos que comprobar es que tengamos instalados los compiladores necesarios (C / C++&#8230;) para poder [...]]]></description>
			<content:encoded><![CDATA[<p>En este artículo voy a explicar los <strong>pasos básicos para compilar Apache y PHP (con soporte para MySQL y otros módulos) en GNU/Linux</strong>, concretamente bajo RHEL, aunque se puede aplicar a cualquier distribución (CentOS, Fedora, Debian, etc).</p>
<p>Lo primero que tenemos que comprobar es que tengamos <a title="Red-Hat y Centos: Instalación de compiladores C / C++" href="http://rm-rf.es/red-hat-centos-instalacion-compiladores-c/">instalados los compiladores necesarios</a> (C / C++&#8230;) para poder empezar a trabajar, en RHEL y CentOS podemos instalarlos por yum, y en Debian y similar por apt:</p>
<pre># yum install gcc gcc-c++ autoconf make automake</pre>
<h2>Compilar Apache</h2>
<p>Para compilar Apache lo primero que debemos hacer es bajarnos las fuentes de la versión que queramos instalar. En este caso vamos a <a href="http://httpd.apache.org/download.cgi#apache22" target="_blank">bajar la última versión estable</a> de la rama 2.2, la 2.2.17:</p>
<pre># wget http://apache.rediris.es//httpd/httpd-2.2.17.tar.gz</pre>
<p>Descomprimimos (podéis hacerlo en el directorio /usr/src/ destinado a las fuentes o en donde más rabia os dé):</p>
<pre>#  tar -xzvf httpd-2.2.17.tar.gz</pre>
<p>Nos ubicamos en la ruta donde hayamos descomprimido las fuentes:</p>
<pre># cd /usr/src/httpd-2.2.17</pre>
<p>Ya estamos listos para comenzar a configurar nuestra instalación. El primer paso de toda compilación es el script <strong>configure</strong>, básicamente es el <strong>momento en el que podemos personalizar como queramos nuestra instalación</strong> (lugar donde instalar apache, módulos a compilar, cómo cargar esos módulos, etc) también se realizan ciertos chequeos para verificar que la compilación se puede realizar correctamente.</p>
<p>Para ver todas las posibilidades que nos ofrece la configuración, siempre tendremos que ejecutar la ayuda, resultaría tedioso explicar aquí todas las opciones de compilación así que nos vamos a centrar en una instalación básica, para personalizar vuestras instalaciones:</p>
<pre># ./configure --help</pre>
<p>Bien, en nuestro caso la línea de configure va a ser la siguiente:</p>
<pre># ./configure --prefix=/usr/local/apache --enable-headers --enable-rewrite --enable-expires --enable-so --disable-authz-default</pre>
<ul>
<li><strong>&#8211;prefix=&lt;ruta&gt;</strong> será la ruta en la que vamos a instalar Apache, en este caso /usr/local/apache.</li>
<li><strong>&#8211;enable-MODULO</strong>: para la activación de módulos utilizamos este parámetro. En la línea de configuración vemos que hemos activado <em>mod_rewrite, mod_headers y mod_expires</em>. Si no especificamos nada, los módulos se cargan de forma estática, para cargarlos de forma dinámica (DSO, explicado en el siguiente punto) utilizamos <strong>&#8211;enable-MODULO=shared</strong>.</li>
<li><strong>&#8211;enable-so</strong> Permitimos a Apache cargar módulos compartidos (Dynamic Shared Object (DSO)), php será uno de ellos. Esta opción también nos permitirá añadir nuevos módulos sin necesidad de recompilar y de forma dinámica (añadiendo simplemente el módulo mediante &#8220;Load Module&#8221; en la configuración). Los modulos que añadamos a través de esta línea de compilación, y sin especificar <em>shared</em> se instalarán de forma estática.</li>
<li><strong>&#8211;disable-MODULO</strong>: He puesto un ejemplo de deshabilitar un módulo en la línea de compilación para que veáis que se pueden deshabilitar módulos (por defecto Apache carga algunos módulos que quizás no te interesen), en el ejemplo desactivamos authz-default</li>
</ul>
<p>Una vez que tengamos claro que queremos y que no queremos instalar, podemos <em>construir</em> nuestra compilación, para ello simplemente ejecutamos make (según la cantidad de módulos que hayas configurado le puede costar un rato, puedes ir a tomar un café mientras ;) ):</p>
<pre># make</pre>
<p>Y una vez que haya terminado, finalizamos la compilación e instalamos apache:</p>
<pre># make install</pre>
<p>Cuando haya terminado ya podemos probar nuestra instalación de apache, lo arrancamos:</p>
<pre># /usr/local/apache/bin/apachectl start</pre>
<p>Si accedemos vía web, por ejemplo desde la IP del servidor o el host que tenga configurado, deberíamos visualizar lo siguiente:</p>
<p><strong><em>It works!</em></strong></p>
<h3>Cómo actualizar Apache</h3>
<p>La actualización por compilación de fuentes es bastante sencilla. Simplemente tendríamos que seguir este mismo proceso, pero en el punto del configure apache nos lo pone más fácil. <strong>En la ruta /usr/local/apache/build encontraréis un fichero llamado config.nice que guarda vuestros parámetros de compilación</strong>, con lo que podéis usar dicho fichero en lugar de crear un nuevo configure. El proceso sería entonces, bajar las fuentes de la nueva versión y:</p>
<pre># ./config.nice
# make
# make install
</pre>
<p><em><strong>Nota</strong>: Los ficheros de configuración, logs y documentos no se sobreescribirán durante la actualización.</em></p>
<h2>Compilar PHP</h2>
<p>Ahora que ya tenemos Apache funcionando, es hora de instalar PHP. Vamos a seguir el mismo procedimiento que para compilar Apache. En este caso vamos a instalar PHP con soporte para MySQL y algún otro módulo que veremos más adelante.</p>
<p>Empezamos descargando las fuentes desde el <a href="http://php.net/" target="_blank">sitio web de PHP</a>. En este caso la última versión estable de la rama 5.3, la 5.3.6. De nuevo nos colocamos en el directorio src o donde queráis trabajar mientras instalamos:</p>
<pre># cd /usr/sr
# wget http://es2.php.net/get/php-5.3.6.tar.gz/from/es.php.net/mirror</pre>
<p>Descomprimimos y nos colocamos dentro del directorio:</p>
<pre># tar -xzvf php-5.3.6.tar.gz
# cd php-5.3.6</pre>
<p>Ahora, al igual que con Apache llega el momento de crear la línea de configuración, el configure. Del mismo modo podemos seleccionar la ruta de instalación, los módulos y una buena cantidad de parámetros para personalizar nuestra instalación. Es imprescindible pues revisar la ayuda:</p>
<pre># ./configure --help</pre>
<p>Una vez que tenemos claro que y como queremos instalar, comenzamos con el configure:</p>
<pre># ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql --enable-ftp --disable-pdo --disable-ctype</pre>
<p>Pasamos a explicar esta línea de configure:</p>
<ul>
<li><strong>&#8211;prefix</strong>: al igual que con Apache especificamos la ruta en la que instalaremos php.</li>
<li><strong>&#8211;with-config-file-path</strong>: especificamos la ruta donde se encontrará el fichero de configuración php.ini.</li>
<li><strong>&#8211;with-apxs2</strong>: como vamos a compilar php como módulo dinámico (DSO) updatede apache especificamos la ruta a apxs.</li>
<li><strong>&#8211;with-libxml2</strong>: para evitar el error provocado porque la compilación no encuentra xml2-config necesitaremos tener instalado libxml2-devel (yum install libxml2-devel. El error es <em>configure: error: xml2-config not found. Please check your libxml2 installation</em>.</li>
<li><strong>&#8211;with-mysql</strong>: habilitamos soporte para MySQL. Por supuesto, antes de habilitar cualquier extensión, si depende de algún programa hay que instalarlo antes, en este caso el cliente MySQL y las headers (paquete devel):
<pre>yum install mysql mysql-devel</pre>
</li>
<li><strong>&#8211;enable-ftp</strong>: habilitamos soporte para FTP. Podemos habilitar cualquier otro módulo con <strong>&#8211;enable-MODULO</strong></li>
<li><strong>&#8211;disable-pdo</strong>: deshabilitamos el soporte para PDO. Podemos deshabilitar cualquier otro módulo con <strong>&#8211;disable-MODULO</strong></li>
</ul>
<p>Una vez seleccionados los módulos a instalar y las opciones correspondientes podemos comenzar a compilar (puede tardar un rato):</p>
<pre># make</pre>
<p>Si todo ha ido bien y no hemos recibido errores podemos finalizar la instalación:</p>
<pre># make install</pre>
<p>Una vez instalado automáticamente habrá añadido la carga del módulo en nuestra configuración de apache (fichero httpd.conf):</p>
<pre>LoadModule php5_module modules/libphp5.so</pre>
<p>Ahora solo nos queda indicar a Apache como tiene que interpretar los ficheros php, tenemos que añadir la siguiente línea dentro del fichero httpd.conf. Podemos añadirla junto a los demás AddType, buscadlos y colocadla debajo:</p>
<pre>AddType application/x-httpd-php .php</pre>
<p>Ahora solo queda reiniciar apache y verificar el funcionamiento de php. Antes comprobamos que la sintaxis del fichero de configuración httpd.conf es correcta:</p>
<pre># /usr/local/apache/bin/apachectl configtest
Syntax OK</pre>
<p>Reiniciamos apache:</p>
<pre># /usr/local/apache/bin/apachectl restart</pre>
<p>Podemos crear un fichero de pruebas en php para verificar todos los parámetros y módulos de la instalación de php, el contenido es el siguiente:</p>
<pre>&lt;? phpinfo(); ?&gt;</pre>
<p>Lo colocamos en el DocumentRoot por defecto, en nuestro caso es /usr/local/apache/htdocs y lo ejecutamos desde el navegador, el resultado es el siguiente, ya tenemos Apache y php operativo:</p>
<div align="center"><img src="http://rm-rf.es/wp-content/uploads/2011/03/php.jpeg" alt="php 5.3.6" title="php 5.3.6" width="450" height="525" class="size-full wp-image-1651" /></div>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/" title="pecl: configure: error: cannot run C compiled programs">pecl: configure: error: cannot run C compiled programs</a></li><li><a href="http://rm-rf.es/configure-error-libpng-aso-not-found-compilando-php-con-64-bits/" title="configure: error: libpng.(a|so) not found (compilando PHP con 64 bits)">configure: error: libpng.(a|so) not found (compilando PHP con 64 bits)</a></li><li><a href="http://rm-rf.es/activar-pcntl-para-php-en-cpanel-easyapache/" title="Activar pcntl para PHP en cPanel (easyapache)">Activar pcntl para PHP en cPanel (easyapache)</a></li><li><a href="http://rm-rf.es/suphp-premature-end-of-script-headers-en-el-error_log/" title="suPHP: &#8220;Premature end of script headers&#8221; en el error_log">suPHP: &#8220;Premature end of script headers&#8221; en el error_log</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/como-compilar-apache-php-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar módulo OAuth de PHP en cPanel/WHM</title>
		<link>http://rm-rf.es/instalar-modulo-oauth-de-php-en-cpanelwhm/</link>
		<comments>http://rm-rf.es/instalar-modulo-oauth-de-php-en-cpanelwhm/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 15:15:41 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[cPanel]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[modulos]]></category>
		<category><![CDATA[pecl]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1532</guid>
		<description><![CDATA[En cPanel, desde EasyApache no existe la posibilidad de instalar el módulo de PHP OAuth. Para instalarlo debemos hacerlo a través de PHP Pecl. La instalación es sencilla, tenéis que acceder a WHM (puerto 2086) y entrar en &#8220;Module Installers&#8221; &#8211;> &#8220;Manage PHP Pecl&#8221;. Una vez dentro buscáis el módulo OAuth y lo instaláis. Si [...]]]></description>
			<content:encoded><![CDATA[<p>En cPanel, desde EasyApache no existe la posibilidad de instalar el módulo de <strong>PHP OAuth</strong>. Para instalarlo debemos hacerlo a través de <strong>PHP Pecl</strong>. La instalación es sencilla, tenéis que acceder a WHM (puerto 2086) y entrar en &#8220;Module Installers&#8221; &#8211;> &#8220;Manage PHP Pecl&#8221;. Una vez dentro buscáis el módulo OAuth y lo instaláis.</p>
<p>Si recibís el siguiente error en el proceso de compilación, tendréis que instalar pcre y pcre devel, en CentOS y RHEL:</p>
<pre>/usr/include/php/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory</pre>
<pre># yum install pcre-devel.i386 pcre.i386</pre>
<p>Otra opción, es hacerlo desde línea de comandos:</p>
<pre># pecl install -R /usr/lib/php oauth</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/" title="pecl: configure: error: cannot run C compiled programs">pecl: configure: error: cannot run C compiled programs</a></li><li><a href="http://rm-rf.es/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalar-modulo-oauth-de-php-en-cpanelwhm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>suPHP 0.7.1: SecurityException in Application.cpp:511: Unknown Interpreter: php</title>
		<link>http://rm-rf.es/suphp-0-7-1-securityexception-in-application-cpp511-unknown-interpreter-php/</link>
		<comments>http://rm-rf.es/suphp-0-7-1-securityexception-in-application-cpp511-unknown-interpreter-php/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 17:27:54 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[suphp]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1476</guid>
		<description><![CDATA[Hoy he estado actualizando un equipo. Una de las actualizaciones era la de la versión de suPHP a la 0.7.1. La actualización ha ido bien hasta que he comenzado a probar los sitios web. Todos recibían un error 500 (Internal Server Error), típico de suPHP, y en los logs se volcaba la siguiente información: [Sun [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he estado actualizando un equipo. Una de las actualizaciones era la de la versión de <strong><a title="suPHP" href="http://rm-rf.es/sobre/suphp/">suPHP</a></strong> a la <strong>0.7.1</strong>. La actualización ha ido bien hasta que he comenzado a probar los sitios web.</p>
<p>Todos recibían un <strong>error 500 (Internal Server Error)</strong>, típico de suPHP, y en los logs se volcaba la siguiente información:</p>
<pre>[Sun Oct 17 19:08:03 2010] [error] [client XX.XX.XXX.XX] SecurityException in Application.cpp:511: Unknown Interpreter: php
[Sun Oct 17 19:08:03 2010] [error] [client XX.XX.XXX.XX] Premature end of script headers: index.php
</pre>
<p>En este momento ya había entrado en <em>modo pánico</em>, pero rebuscando por Internet información sobre esta versión, he visto que había un pequeño cambio o bug (bueno, pequeño&#8230;) por el cual, en el fichero de configuración de suPHP (/etc/suphp.conf) <strong>los handlers tenían que ir entre comillas</strong>:</p>
<p>Antes:</p>
<pre>;Handler for php-scripts
x-httpd-php=php:/usr/bin/php-cgi

;Handler for CGI-scripts
x-suphp-cgi=execute:!self
</pre>
<p>Después:</p>
<pre>;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"
</pre>
<p>Tras este cambio, y reiniciar apache todo ha vuelto a funcionar a la normalidad.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/suphp-premature-end-of-script-headers-en-el-error_log/" title="suPHP: &#8220;Premature end of script headers&#8221; en el error_log">suPHP: &#8220;Premature end of script headers&#8221; en el error_log</a></li><li><a href="http://rm-rf.es/utilizar-htaccess-phpini-en-apache-con-suphp/" title="Utilizar .htaccess / php.ini en Apache con suPHP">Utilizar .htaccess / php.ini en Apache con suPHP</a></li><li><a href="http://rm-rf.es/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/suphp-0-7-1-securityexception-in-application-cpp511-unknown-interpreter-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar php-mcrypt y php-mbstring para PHP 5.2.10 con yum</title>
		<link>http://rm-rf.es/instalar-php-mcrypt-y-php-mbstring-para-php-5-2-10-con-yum/</link>
		<comments>http://rm-rf.es/instalar-php-mcrypt-y-php-mbstring-para-php-5-2-10-con-yum/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 12:02:24 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[mbstring]]></category>
		<category><![CDATA[mcrypt]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1460</guid>
		<description><![CDATA[Hace unos meses vimos como Instalar php 5.2.10 a través de YUM en CentOS. Ahora necesitamos instalar un par de extensiones, php-mcrypt y php-mbstring que no están disponibles en el repositorio para esta versión en concreto. Si instalamos las del repositorio base nos encontraremos con errores e incompatibilidades (son para la rama 5.1.X). La solución es [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos meses vimos como <a title="Instalar php 5.2.10 a través de YUM en CentOS" href="http://rm-rf.es/instalar-php-5-2-10-a-traves-de-yum-en-centos/">Instalar php 5.2.10 a través de YUM en CentOS</a>. Ahora necesitamos instalar un par de extensiones, <strong>php-mcrypt y php-mbstring</strong> que no están disponibles en el repositorio para esta versión en concreto. Si instalamos las del repositorio base nos encontraremos con errores e incompatibilidades (son para la rama 5.1.X).</p>
<p>La solución es recurrir al repositorio <em>testing</em> de Centos 5, donde podemos instalar las versiones disponibles para 5.2.9 y 5.2.10 respectivamente que sí que son compatibles.</p>
<p><strong>Instalar php-mcrypt con yum:</strong></p>
<pre># yum --enablerepo=c5-testing install php-mcrypt</pre>
<p><strong>Instalar php-mbstring con yum:</strong></p>
<pre># yum --enablerepo=c5-testing install php-mbstring</pre>
<p>﻿﻿</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/instalar-php-5-2-10-a-traves-de-yum-en-centos/" title="Instalar php 5.2.10 a través de YUM en CentOS">Instalar php 5.2.10 a través de YUM en CentOS</a></li><li><a href="http://rm-rf.es/centos-46-actualizar-php4-a-php5-con-yum/" title="Centos 4.6: Actualizar php4 a php5 con yum">Centos 4.6: Actualizar php4 a php5 con yum</a></li><li><a href="http://rm-rf.es/como-crear-un-repositorio-local-de-yum/" title="Cómo crear un repositorio local de yum">Cómo crear un repositorio local de yum</a></li><li><a href="http://rm-rf.es/6-trucos-utiles-del-gestor-de-paquetes-yum/" title="6 trucos útiles del gestor de paquetes yum">6 trucos útiles del gestor de paquetes yum</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalar-php-mcrypt-y-php-mbstring-para-php-5-2-10-con-yum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

