<mohammadrony>

Laravel with Oracle Database

Ubuntu

Install PHP

sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt install -y php7.4 php7.4-fpm php7.4-common php7.4-cli php7.4-mbstring php7.4-curl php7.4-xml php7.4-bcmath php7.4-gd php7.4-zip

Start PHP7.4-FPM

sudo systemctl enable --now php7.4-fpm

Install SQLplus

Download Oracle Instant Client

wget https://download.oracle.com/otn_software/linux/instantclient/1922000/instantclient-basic-linux.x64-19.22.0.0.0dbru.zip -O instantclient-basic-linux.zip
wget https://download.oracle.com/otn_software/linux/instantclient/1922000/instantclient-sqlplus-linux.x64-19.22.0.0.0dbru.zip -O instantclient-sqlplus-linux.zip
wget https://download.oracle.com/otn_software/linux/instantclient/1922000/instantclient-sdk-linux.x64-19.22.0.0.0dbru.zip -O instantclient-sdk-linux.zip
sudo mkdir -p /usr/lib/oracle/19.22/client64
sudo unzip -o instantclient-basic-linux.zip -d /usr/lib/oracle/19.22/client64/
sudo unzip -o instantclient-sqlplus-linux.zip -d /usr/lib/oracle/19.22/client64/
sudo unzip -o instantclient-sdk-linux.zip -d /usr/lib/oracle/19.22/client64/
# # Not sure if needed
# wget https://download.oracle.com/otn_software/linux/instantclient/1922000/instantclient-odbc-linux.x64-19.22.0.0.0dbru.zip -O instantclient-odbc-linux.zip

# sudo unzip -o instantclient-odbc-linux.zip -d /usr/lib/oracle/19.22/client64/
cd /usr/lib/oracle/19.22/client64
sudo mv instantclient_19_22 lib
cd lib
sudo ln -sf libclntsh.so.19.1 libclntsh.so
sudo ln -sf libocci.so.19.1 libocci.so
echo '/usr/lib/oracle/19.22/client64/lib' | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig

Install oci8

sudo apt install -y build-essential php-pear php7.4-dev libaio1 libapache2-mod-php7.4

oci8 install

sudo pecl channel-update pecl.php.net
echo "instantclient,/usr/lib/oracle/19.22/client64/lib" | sudo pecl install oci8-2.2.0 # PHP = 7
echo "extension=oci8.so" | sudo tee -a /etc/php/7.4/fpm/php.ini
echo "extension=oci8.so" | sudo tee -a /etc/php/7.4/cli/php.ini
echo "extension=oci8.so" | sudo tee -a /etc/php/7.4/apache2/php.ini

Library path environment setup

# Update in .bashrc and .zshrc
export LD_LIBRARY_PATH=/usr/lib/oracle/19.22/client64/lib:$LD_LIBRARY_PATH
echo 'LD_LIBRARY_PATH=/usr/lib/oracle/19.22/client64/lib:$LD_LIBRARY_PATH' | sudo tee -a /etc/environment
sudo systemctl restart php7.4-fpm

Check status

php -v
php -m

Install composer

curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer
composer install

Generate php files

composer dump-autoload
php artisan optimize

Remove PHP

sudo apt purge "php*"

RHEL

Install PHP

sudo yum install -y epel-release
sudo yum install -y curl unzip tree
sudo yum install yum-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum module enable -y php:remi-7.4
sudo yum install -y php php-fpm php-common php-cli php-mbstring php-curl php-xml php-bcmath php-pdo php-gd php-zip

Start PHP-FPM

sudo systemctl enable --now php-fpm

Install SQLplus

Download Oracle Instant Client

wget https://download.oracle.com/otn_software/linux/instantclient/1922000/oracle-instantclient19.22-basic-19.22.0.0.0-1.x86_64.rpm -O oracle-instantclient19.22-basic.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/1922000/oracle-instantclient19.22-sqlplus-19.22.0.0.0-1.x86_64.rpm -O oracle-instantclient19.22-sqlplus.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/1922000/oracle-instantclient19.22-devel-19.22.0.0.0-1.x86_64.rpm -O oracle-instantclient19.22-devel.rpm
sudo yum install -y oracle-instantclient19.22-basic.rpm
sudo yum install -y oracle-instantclient19.22-sqlplus.rpm
sudo yum install -y oracle-instantclient19.22-devel.rpm
# # Not sure if needed
# wget https://download.oracle.com/otn_software/linux/instantclient/1922000/oracle-instantclient19.22-odbc-19.22.0.0.0-1.x86_64.rpm -O oracle-instantclient19.22-odbc.rpm

# sudo yum install -y oracle-instantclient19.22-odbc.rpm

Install oci8

Installation guide

sudo yum install -y libnsl php-pear systemtap-sdt-devel
# # Not sure if needed
# sudo dnf config-manager --set-enabled powertools
# sudo yum install -y libedit-devel php-devel gcc curl-devel zlib-devel pcre-devel php-pecl-http
sudo setenforce 0

oci8 install

echo "instantclient,/usr/lib/oracle/19.22/client64/lib" | sudo PHP_DTRACE=yes pecl install oci8-2.2.0 # PHP = 7
sudo su

echo extension=oci8.so >> /etc/php.ini
sudo systemctl restart php-fpm

Check status

php -v
php -m

Install composer

curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer
composer install

Generate php files

composer dump-autoload

Optimize for production

php artisan optimize

Remove PHP

sudo yum remove "php*""