Inglés

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

  1. Descarga los paquetes Instant Client Basic y SDK para Linux x86_64 desde la página oficial de Oracle.
  2. Copia los archivos .zip descargados al servidor Debian.
  3. 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

Ésta página utiliza cookies propias y almacenamiento local para facilitar el uso de nuestra web. Si continua navegando, supone la aceptación de nuestra política de cookies. Tenga en cuenta que si las desactiva no podrá utilizar nuestra tienda.


0