<?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/sobre/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>Wed, 23 May 2012 19:38:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</title>
		<link>http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/</link>
		<comments>http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/#comments</comments>
		<pubDate>Fri, 04 May 2012 06:48:26 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[vulnerabilidad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2635</guid>
		<description><![CDATA[Todas las instalaciones de PHP en modo CGI están afectadas, al parecer se trata de una vulnerabilidad de la cual nadie se había dado cuenta en nada menos que ocho años. Básicamente, la vulnerabilidad consiste en que en este tipo de instalaciones (sólo CGI, FastCGI o DSO no se ven afectadas), si la petición/request contiene [...]]]></description>
			<content:encoded><![CDATA[<p>Todas las <strong>instalaciones de PHP en modo CGI</strong> están afectadas, al parecer se trata de una vulnerabilidad de la cual nadie se había dado cuenta en nada menos que ocho años.</p>
<p>Básicamente, la vulnerabilidad consiste en que en este tipo de instalaciones (<strong>sólo CGI, FastCGI o DSO no</strong> se ven afectadas), si la petición/request contiene <strong>?-s</strong> permite volcar por pantalla el código fuente PHP en lugar de interpretarlo.</p>
<p>Para verificar si la vulnerabilidad nos afecta, sólo es necesario añadir ?-s a la URL y ver si descargamos el código fuente, ejemplo:</p>
<pre>dominio.com/test.php?-s</pre>
<p>Por suerte, ya podemos descargar las versiones parcheadas desde el sitio web de PHP, concretamente la PHP 5.3.12 o PHP 5.4.2. Si no queremos o podemos actualizar tan sencillamente, podemos aplicar un workaround mediante el cual configuramos unos rewrite, ya sea en el virtualhost o a nivel de .htaccess para bloquear este tipo de peticiones. Para Apache con mod_rewrite:</p>
<pre>
         RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
         RewriteRule ^(.*) $1? [L]
</pre>
<p>Más información en <a href="http://www.php.net/archive/2012.php#id2012-05-03-1" target="_blank">www.php.net</a></p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/iis-imposible-ejecutar-perl-php-application-pool-isolation/" title="IIS: Imposible ejecutar perl o php con Application Pool Isolation">IIS: Imposible ejecutar perl o php con Application Pool Isolation</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><li><a href="http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/" title="Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze">Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze</a></li><li><a href="http://rm-rf.es/instalacion-y-configuracion-de-suphp/" title="Instalación y configuración de suPHP">Instalación y configuración de suPHP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze</title>
		<link>http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/</link>
		<comments>http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 17:49:14 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[php 5.3]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2613</guid>
		<description><![CDATA[Muchos pensaréis que para que instalar la versión 5.2, que ya está obsoleta, en lugar de la 5.3 que es la estable actualmente. Lamentablemente hay aplicaciones que todavía no son compatibles con 5.3.3, que es la versión de PHP que trae Debian Squeeze en los repositorios. Lo que vamos a hacer entonces es configurar el [...]]]></description>
			<content:encoded><![CDATA[<p><img class=" wp-image-2614" title="Logo PHP" src="http://rm-rf.es/wp-content/uploads/2012/04/php-logo.png" alt="Logo PHP" width="264" height="169" align="right" />Muchos pensaréis que para que instalar la versión 5.2, que ya está obsoleta, en lugar de la 5.3 que es la estable actualmente. Lamentablemente hay aplicaciones que todavía no son compatibles con 5.3.3, que es la versión de PHP que trae Debian Squeeze en los repositorios.</p>
<p>Lo que vamos a hacer entonces es <strong>configurar el sistema para que instale con repositorios de Lenny todo lo relacionado con PHP</strong>. Personalmente, lo que más me ha costado es encontrar unos repositorios activos de la arquitectura de la máquina en la que estaba trabajando, encontré un mirror de dig.</p>
<p>Lo primero es añadir estos repositorios a nuestras<strong> sources.list</strong>:</p>
<pre># vim /etc/apt/sources.list</pre>
<pre># Repositorios para versión antigua de PHP (5.2.X)
deb http://mirrors.digg.com/debian lenny main contrib non-free
deb-src http://mirrors.digg.com/debian lenny main contrib non-free</pre>
<p>Además de esto, vamos a <strong>cambiar la prioridad para los paquetes PHP</strong> y que usen estos repositorios obsoletos:</p>
<pre># vim /etc/apt/preferences</pre>
<pre>Package: php5*
Pin: release a=oldstable
Pin-Priority: 1100</pre>
<p>Actualizamos los repositorios:</p>
<pre># apt-get update</pre>
<p>Y ya podemos instalar los paquetes que quereamos de PHP:</p>
<pre># apt-get -t oldstable install php5</pre>
<p>En el caso de que ya tuviéramos los paquetes de Squeeze instalados, los tenemos que des-instalar antes, todos:</p>
<pre># dpkg --get-selections | grep php</pre>
<p>Y con el resultado:</p>
<pre># apt-get purge ...</pre>
<p>Y un método más rápido:</p>
<pre># apt-get remove `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`</pre>
<p>o</p>
<pre># apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`</pre>
<p>Si no os gusta esta opción, siempre se puede <a title="Cómo compilar Apache y PHP en Linux" href="http://rm-rf.es/como-compilar-apache-php-linux/">compilar PHP a mano</a> y elegir la versión exacta que necesitemos así como los módulos.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/liberado-php-53-alpha1/" title="Liberado PHP 5.3 alpha1">Liberado PHP 5.3 alpha1</a></li><li><a href="http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/instalacion-y-configuracion-de-suphp/" title="Instalación y configuración de suPHP">Instalación y configuración de suPHP</a></li><li><a href="http://rm-rf.es/instalar-php-mbstring-en-rhel-6-por-yum/" title="Instalar php-mbstring en RHEL 6 por yum">Instalar php-mbstring en RHEL 6 por yum</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalación y configuración de suPHP</title>
		<link>http://rm-rf.es/instalacion-y-configuracion-de-suphp/</link>
		<comments>http://rm-rf.es/instalacion-y-configuracion-de-suphp/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 19:25:58 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[suphp]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2533</guid>
		<description><![CDATA[He hablado varias veces sobre configuraciones y posibles errores de suPHP pero nunca sobre el modo de instalarlo. Para quienes no lo sepan, suPHP es un módulo de Apache y a su vez una utilidad independiente que permite que los scripts PHP se ejecuten con el usuario propietario del script. Así mismo, permite establecer restricciones [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2534" title="suPHP" src="http://rm-rf.es/wp-content/uploads/2012/03/suphp_logo.png" alt="suPHP" width="170" height="83" align="right" />He hablado varias veces sobre configuraciones y posibles errores de <a title="suPHP" href="http://rm-rf.es/sobre/suphp/">suPHP</a> pero nunca sobre el modo de instalarlo. Para quienes no lo sepan, <strong>suPHP es un módulo de Apache y a su vez una utilidad independiente que permite que los scripts PHP se ejecuten con el usuario propietario del script</strong>. Así mismo, permite establecer restricciones de seguridad como evitar permisos 777 en directorios, establecer un UID y GID mínimos para los usuarios, forzar a que los scripts de encuentren en el document_root del host, etc.</p>
<p>La instalación es sencilla. Vamos a suponer que tenemos tanto <a title="Cómo compilar Apache y PHP en Linux" href="http://rm-rf.es/como-compilar-apache-php-linux/">Apache como PHP compilados</a> o instalados. La forma más sencilla de activar suPHP es instalando el rpm disponible desde el sitio web oficial, aunque por supuesto podemos compilarlo con los requerimientos que tengamos bajando las sources.</p>
<p>En el caso de rpm, para RHEL, CentOS, Scientific Linux, etc es tan sencillo como bajar el rpm de nuestra arquitectura e instalarlo:</p>
<pre># wget http://pkgs.repoforge.org/mod_suphp/mod_suphp-0.7.1-1.el6.rf.x86_64.rpm
# rpm -ivh mod_suphp-0.7.1-1.el6.rf.x86_64.rpm</pre>
<p>Una vez instalado, se debería haber creado el fichero de configuración en <strong>/etc/httpd/conf.d/suphp.conf</strong>. Antes de nada, debemos mover, eliminar o comentar todo el contenido del fichero <strong>/etc/httpd/conf.d/php.conf</strong> para no cargar el módulo DSO de php, que como sabéis hace que todos los scripts php se ejecuten con el usuario de Apache (www-root, apache, nobody&#8230;) con el problema de seguridad que conlleva.</p>
<p>Lo más importante del fichero de configuración es tener cargado el módulo y especificados los handler que dirán como gestionar los scripts php, así como tener el motor de suPHP activado:</p>
<pre>LoadModule suphp_module modules/mod_suphp.so

# This option tells mod_suphp if a PHP-script requested on this server (or
# VirtualHost) should be run with the PHP-interpreter or returned to the
# browser "as it is".
suPHP_Engine on

# To use suPHP to parse PHP-Files
AddHandler x-httpd-php .php
AddHandler x-httpd-php .php .php4 .php3 .phtml</pre>
<p>El otro fichero de configuración crítico es <strong>/etc/suphp.conf</strong>, cuyas variables son suficientemente descriptivas, los valores por defecto son válidos para una configuración correcta. Tened en cuenta únicamente <a title="suPHP 0.7.1: SecurityException in Application.cpp:511: Unknown Interpreter: php" href="http://rm-rf.es/suphp-0-7-1-securityexception-in-application-cpp511-unknown-interpreter-php/">el bug que ya comenté de los handlers</a>. Revisad la <a href="http://www.suphp.org/DocumentationView.html?file=CONFIG" target="_blank">documentación oficial</a> para más info.</p>
<pre>[global]
logfile=/var/log/httpd/suphp_log
loglevel=info
webserver_user=apache
docroot=/
env_path=/bin:/usr/bin
umask=0077
min_uid=500
min_gid=500

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

[handlers]
;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"</pre>
<p>Finalmente, en cada virtualhost tendremos que especificar el usuario y grupo que ejecutará los scripts php, usamos la directiva <strong>suPHP_UserGroup en cada Virtualhost</strong>:</p>
<pre>suPHP_UserGroup usuario grupo</pre>
<p>Validamos la configuración y reiniciamos Apache. Tened en cuenta las siguientes consideraciones básicas (revisad los logs de errores de Apache y suPHP porque tendréis seguro algunos), por defecto tenemos lo siguiente:</p>
<ul>
<li>Los scripts php no pueden tener permiso de escritura para el grupo ni para el resto, es decir, lo máximo sería 0644</li>
<li>Los directorios no pueden tener permisos para otros ni el grupo, es decir, 777 no es válido y 775 tampoco, recomendable 755.</li>
<li>Las directivas php_flag de .htaccess pasan a un fichero php.ini en la misma ruta con el formato estándar de php.</li>
<li>El propietario y grupo de los scripts debe ser el especificado en suPHP_UserGroup.</li>
</ul>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/suphp-0-7-1-securityexception-in-application-cpp511-unknown-interpreter-php/" title="suPHP 0.7.1: SecurityException in Application.cpp:511: Unknown Interpreter: php">suPHP 0.7.1: SecurityException in Application.cpp:511: Unknown Interpreter: php</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><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/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalacion-y-configuracion-de-suphp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Instalar php-mbstring en RHEL 6 por yum</title>
		<link>http://rm-rf.es/instalar-php-mbstring-en-rhel-6-por-yum/</link>
		<comments>http://rm-rf.es/instalar-php-mbstring-en-rhel-6-por-yum/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 18:10:14 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2506</guid>
		<description><![CDATA[Hoy toca una entrada rápida. Si tenéis que instalar el módulo php mb-strings por yum/rpm en RHEL 6 de primeras veréis que el paquete no está disponible en los repositorios oficiales. Esto es porque hay que activar el repositorio opcional desde la Red Hat Network. Para ello acceded a http://rhn.redhat.com con vuestro usuario y password. [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy toca una entrada rápida. Si tenéis que <strong>instalar el módulo php mb-strings por yum/rpm en RHEL 6</strong> de primeras veréis que el paquete no está disponible en los repositorios oficiales. Esto es porque hay que activar el repositorio opcional desde la Red Hat Network.</p>
<p>Para ello acceded a http://rhn.redhat.com con vuestro usuario y password. Entrad en la sección de <strong>sistemas (Systems)</strong>, pinchad en el servidor que queráis activar el repositorio y una vez dentro accedemos a la sección de suscripciones a canales (<strong>modificar canales de suscripción / Subscribed Channels (Alter Channel Subscriptions)</strong>. Ahí es donde activamos <strong>RHEL Server Optional</strong> y guardamos.</p>
<p>Ahora en la máquina únicamente queda actualizar el perfil rhn e instalar:</p>
<pre># rhn-profile-sync
# yum install php-mbstring</pre>
<p>De este modo nos evitamos <a title="Cómo compilar Apache y PHP en Linux" href="http://rm-rf.es/como-compilar-apache-php-linux/">compilar a mano php</a> y tenemos la versión pre-compilada oficial de RedHat.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/rhn_register-y-yum-a-traves-de-un-proxy/" title="rhn_register y yum a través de un proxy">rhn_register y yum a través de un proxy</a></li><li><a href="http://rm-rf.es/instalar-php-mcrypt-y-php-mbstring-para-php-5-2-10-con-yum/" title="Instalar php-mcrypt y php-mbstring para PHP 5.2.10 con yum">Instalar php-mcrypt y php-mbstring para PHP 5.2.10 con yum</a></li><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></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/instalar-php-mbstring-en-rhel-6-por-yum/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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/nmap-online-para-tu-ip-o-clase-c/" title="Nmap Online para tu IP o Clase C">Nmap Online para tu IP o Clase C</a></li><li><a href="http://rm-rf.es/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/hacer-persistentes-los-cambios-en-ulimit-limits-conf/" title="Hacer persistentes los cambios en ulimit (limits.conf)">Hacer persistentes los cambios en ulimit (limits.conf)</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/monitorizar-oracle-iplanet-web-server-con-get-perfdump/" title="Monitorizar Oracle iPlanet Web Server con get-perfdump">Monitorizar Oracle iPlanet Web Server con get-perfdump</a></li><li><a href="http://rm-rf.es/consultar-y-exportar-certificados-ssl-en-sun-web-server-certutil-y-pkcs12/" title="Consultar y exportar certificados SSL en Sun Web Server (certutil y pkcs12)">Consultar y exportar certificados SSL en Sun Web Server (certutil y pkcs12)</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></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/monitorizar-oracle-iplanet-web-server-con-get-perfdump/" title="Monitorizar Oracle iPlanet Web Server con get-perfdump">Monitorizar Oracle iPlanet Web Server con get-perfdump</a></li><li><a href="http://rm-rf.es/consultar-y-exportar-certificados-ssl-en-sun-web-server-certutil-y-pkcs12/" title="Consultar y exportar certificados SSL en Sun Web Server (certutil y pkcs12)">Consultar y exportar certificados SSL en Sun Web Server (certutil y pkcs12)</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></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/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/" title="Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze">Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze</a></li><li><a href="http://rm-rf.es/apache-permitir-acceso-a-un-directorio-con-autenticacion-para-una-ip-cidr/" title="Apache: permitir acceso a un directorio con autenticación para una IP / CIDR">Apache: permitir acceso a un directorio con autenticación para una IP / CIDR</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/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/pecl-configure-error-cannot-run-c-compiled-programs/feed/</wfw:commentRss>
		<slash:comments>4</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/vulnerabilidad-critica-en-instalaciones-de-php-basadas-en-cgi/" title="Vulnerabilidad crítica en instalaciones de PHP basadas en CGI">Vulnerabilidad crítica en instalaciones de PHP basadas en CGI</a></li><li><a href="http://rm-rf.es/instalar-php-5-2-en-lugar-de-php-5-3-en-debian-squeeze/" title="Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze">Instalar PHP 5.2 en lugar de PHP 5.3 en Debian Squeeze</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>
	</channel>
</rss>

