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 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 checking whether the C compiler works... configure: error: cannot run C compiled programs. If you meant to cross compile, use `--host'. See `config.log' for more details. ERROR: `/usr/lib/php/root/tmp/pear/oauth/configure' failed
El error nos indica que no podemos ejecutar la compilación, en este caso es debido a que tenemos securizada la partición /tmp y no permitimos la ejecución en ella, pecl compila ahí de forma temporal el módulo.
# mount | grep ^/tmp /tmp on /var/tmp type ext3 (rw,noexec,nosuid,bind)
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:
# mount -o remount,exec,suid /tmp # pecl install -R /usr/lib/php oauth # mount -o rw,noexec,nosuid,bind /tmp
Otra opción más segura y que evita tener que modificar el sistema de archivos /tmp es la que Santi nos ofrece en su comentario, exportamos la variable TMP a un lugar dentro de una partición con exec permitido e instalamos:
# mkdir -p /root/temporal # export TMP=/root/temporal # pecl install oauth
Hola Alex,
Si quieres evitar modificar las opciones de seguridad de /tmp, aunque sea temporalmente y durante apenas unos segundos, un tip podría ser exportar la variable TMP a otro directorio sobre un sistema de ficheros que no tenga la opción noexec habilitada, / por ejemplo:
mkdir -p /root/temporal
export TMP=/root/temporal
pecl install oauth
Saludos,
Muy buena Santi, no se me había ocurrido. Desde luego es mejor opción.
Saludos!
Hola
despues de hacer la instalacion es seguro eliminar el tmp temporal??, es necesario ejecutar algo mas??
Saludos
Hola. utilizando la solucion de Santi no me funciono, mi error es similar, pero yo intento instalar
pecl install ssh2 http://pecl.php.net/get/ssh2-0.11.3.tgz
checking whether the C compiler works… configure: error: cannot run C compiled programs.
If you meant to cross compile, use `–host’.
See `config.log’ for more details.
ERROR: `/root/tmp/pear/ssh2/configure –with-ssh2′ failed
y ya aplique el exportar el tmp a otra carpeta
alguna otra opción?