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