Instalación de OCI8 para PHP 8.4 en Debian Trixie con Nginx
07 / 10 / 2025

En Debian Trixie la librería libaio1, necesaria para OCI8, ha sido renombrada a libaio1t64, y no sirve. O sea, parece que OCI8 no la encuentra o algo así. La solución es usar libaio1 de Debian Bookworm. A continuación explicamos cómo hacerlo con PHP 8.4, Nginx y PHP-FPM.
Nota: Todas las instrucciones están pensadas para ejecutarse como root. Si no eres root, antepone sudo a cada comando.
Requisitos previos
- Debian Trixie con Nginx y PHP-FPM 8.4 instalados
- Acceso root o privilegios sudo
1. Descargar y descomprimir Oracle Instant Client
- Descarga los paquetes Instant Client Basic y SDK para Linux x86_64 desde la página oficial de Oracle.
- Copia los archivos .zip descargados al servidor Debian.
- Como root, crea el directorio destino y descomprime los archivos:
# mkdir -p /opt/oracle
# unzip instantclient-basic-linux.x64-23.9.0.0.0.zip -d /opt/oracle/
# unzip instantclient-sdk-linux.x64-23.9.0.0.0.zip -d /opt/oracle/
Si es necesario, ajusta permisos para que el usuario que corre PHP-FPM (usualmente www-data) pueda leer:
# chmod -R o+r /opt/oracle/instantclient_23_9
2. Instalar libaio1 de Bookworm
# wget http://ftp.de.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.113-4_amd64.deb # dpkg -i libaio1_0.3.113-4_amd64.deb
3. Configurar variables de entorno para Oracle Instant Client
# cat > /etc/profile.d/oracle.sh <<EOF
export LD_LIBRARY_PATH=/opt/oracle/instantclient_23_9:$LD_LIBRARY_PATH
export PATH=/opt/oracle/instantclient_23_9:$PATH
EOF
# source /etc/profile.d/oracle.sh
4. Instalar la extensión OCI8 con PECL
# pecl channel-update pecl.php.net
# echo "instantclient,/opt/oracle/instantclient_23_9" | pecl install oci8
5. Habilitar la extensión OCI8 en PHP 8.4
# cat > /etc/php/8.4/mods-available/oci8.ini <<EOF extension=oci8.so EOF # phpenmod -v 8.4 oci8
6. Configurar variable NLS_LANG para evitar error ORA-12705
# mkdir -p /etc/systemd/system/php8.4-fpm.service.d/
# cat > /etc/systemd/system/php8.4-fpm.service.d/env.conf <<EOF
[Service]
Environment="LD_LIBRARY_PATH=/opt/oracle/instantclient_23_9"
Environment="NLS_LANG=.AL32UTF8"
EOF
# systemctl daemon-reload
# systemctl restart php8.4-fpm
7. Reiniciar Nginx
# systemctl restart nginx