From a451e14d43e8bc2a11779c8775ae9a4235b1a0b6 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Mon, 7 Mar 2022 16:21:09 +0100
Subject: [PATCH] Provide OCI8 for PHP 7.4

---
 tasks/oci-7.4.yml | 102 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 tasks/oci-7.4.yml

diff --git a/tasks/oci-7.4.yml b/tasks/oci-7.4.yml
new file mode 100644
index 0000000..d4f5285
--- /dev/null
+++ b/tasks/oci-7.4.yml
@@ -0,0 +1,102 @@
+---
+# file: roles/php/tasks/oci-7.4.yml
+#
+# https://gist.github.com/Yukibashiri/cebaeaccbe531665a5704b1b34a3498e
+
+- name: Check OCI Requirement
+  stat:
+    path: /usr/lib/php/20190902/oci8.so
+  register: oci_file
+
+- block:
+
+    - name: Enable OCI for PHP
+      copy:
+        content: extension={{ item }}.so
+        dest: /etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini
+        owner: root
+        group: root
+        mode: 0644
+      with_items:
+        - oci8
+
+    - name: Remove possible components in /tmp
+      file:
+        path: /tmp/{{ item }}
+        state: absent
+      with_items:
+        - instantclient_18_5
+        - oracle_x64_18_5_0_0_0_oci8_so_php_7
+
+    - name: Make available Oracle InstantClient
+      command: scp -r {{ repository }}{{ item }} /tmp/
+      become: no
+      with_items:
+        - instantclient_18_5
+        - oracle_x64_18_5_0_0_0_oci8_so_php_7_4
+
+    - name: Remove /opt/oracle/instantclient_18_5
+      file:
+        path: /opt/oracle/instantclient_18_5
+        state: absent
+
+    - name: Ensure directory /opt/oracle
+      file:
+        path: /opt/oracle
+        state: directory
+
+    - name: Move Oracle InstantClient to /opt/oracle
+      command: mv /tmp/instantclient_18_5 /opt/oracle/instantclient_18_5
+
+    - name: Move oci8 to /usr/lib/php
+      command: mv /tmp/oracle_x64_18_5_0_0_0_oci8_so_php_7_4 /usr/lib/php/20190902/oci8.so
+
+    - name: Change ownership for Oracle InstantClient
+      file:
+        path: '{{ item }}'
+        owner: root
+        group: root
+        recurse: yes
+        follow: no
+      with_items:
+        - /opt/oracle/instantclient_18_5
+
+    - name: Ensure log directories
+      file:
+        path: /opt/oracle/instantclient_18_5/log/diag/clients
+        owner: www-data
+        group: root
+        state: directory
+        mode: 0775
+        follow: no
+
+    - name: Set permissions in log directories
+      file:
+        path: /opt/oracle/instantclient_18_5/log
+        owner: www-data
+        group: root
+        mode: 0775
+        recurse: yes
+        follow: no
+
+    - name: Create symlinks
+      file:
+        src: /opt/oracle/instantclient_18_5/{{ item }}.so.18.1
+        dest: /opt/oracle/instantclient_18_5/{{ item }}.so
+        state: link
+      with_items:
+        - libclntsh
+        - libocci
+
+    - name: Configure libraries
+      template:
+        src: etc-ld-oracle
+        dest: /etc/ld.so.conf.d/oracle-instantclient.conf
+        owner: root
+        group: root
+        mode: 0644
+
+    - name: Update libraries
+      command: ldconfig
+
+  when: not oci_file.stat.exists
-- 
GitLab