Как установить oci8 в PHP 7.4
На системе Linux Mint 20 с ядром 5.8.0, пробуем собрать PHP 7.4 с поддержкой расширения для работы с базой данных Oracle Database, для этого добавляем к вызову конфигурационного скрипта (./configure) опцию:
--with-oci8
Если после этого ваш скрипт не находит клиента для Oracle и заканчивается предупреждением:
--with-oci8: not found
Вероятно вам необходимо скачать и установить собственно Oracle Instant Client и SDK для него, которые для себя я нашел по ссылке: Instant Client Downloads for Linux AMD64
Скачав ZIP архивы instantclient-basic и instantclient-sdk (вам понадобится завести аккаунт в Oracle) и выполнив их распаковку, к примеру в директорию /usr/local/lib/oci8/instantclient10_1, создаем символьную ссылку для libclntsh.so:
cd /usr/local/lib/oci8/instantclient10_1
ln -fs libclntsh.so.10.1 libclntsh.so
А также добавляем нашу директорию с библиотеками и SDK в кэш динамических библиотек для подключения их через ldconfig. Как это сделать, я описывал ранее, если вы еще не знаете, то можно подглядеть вот здесь (не забываем вызвать ldconfig после изменения ld.so.config).
Теперь, минимальные требования для сборки с oci8 соблюдены, вновь вызываем конфигурационный скрипт PHP, но с опцией:
--with-oci8=shared,instantclient,/usr/local/lib/oci8/instantclient10_1
Если после очередного вызова мы получаем ошибку:
checking Oracle Instant Client library version compatibility... configure: error: Link from /usr/local/lib/oci8/instantclient10_1/libclntsh.so to /usr/local/lib/oci8/instantclient10_1/libclntsh.so.*.1 not found
Внимательно проверьте создание символической ссылки на библиотеку libclntsh.so.10.1 (читайте выше). Если ошибки нет, то доводим сборку до конца и в итоге получаем в директории PHP расширений (у меня это no-debug-non-zts-20190902), наше желанное расширение oci8.so.
Прописываем в php.ini строку с расширением:
extension=oci8.so
И в итоге получаем поддержку OCI8 Support с клиентской библиотекой версии 10.1:
