Het antwoord is een replicatie van dit artikel (in het Russisch) dat op zijn beurt is gebaseerd op dit bericht met enkele correcties. Na een aantal dagen vruchteloos zoeken werkte het probleemloos voor mij.
Vereisten:
U zou beheerdersrechten moeten hebben
Je zou php5 moeten hebben geïnstalleerd met de volgende pakketten:
sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo
U zou de bibliotheek libaio1 moeten hebben geïnstalleerd:
sudo apt-get install libaio1
Installatie van Oracle Instant Client
Download Oracle Instant Client voor uw processorarchitectuur en besturingssysteem vanaf de Oracle-website (oracle.com/technetwork/database/features/instant-client/index-097480.html).
Voor Linux zijn er 2 opties voor instant client:RPM-pakket voor Linux, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux, enz. ZIP-archief - voor alle andere die RPM niet ondersteunen.
Er zijn 2 bestanden om te downloaden:
instantclient-basic — Oracle instant client zelf
instantclient-sdk — set bibliotheken voor applicatie-ontwikkeling
Directory maken voor Oracle instant client ( /opt directory gereserveerd voor software-extensies is geschikt voor dit doel):
sudo mkdir -p /opt/oracle/
Verplaats gedownloade bestanden naar /opt/oracle en ga naar de doelmap (ervan uitgaande dat je "zip"-archieven hebt gedownload naar de map "downloads" van je gebruiker):
sudo mv ~/downloads/instantclient-*.zip /opt/oracle/
cd /opt/oracle/
Gedownloade archieven uitpakken:
sudo unzip instantclient-basic-*-*.zip
sudo unzip instantclient-sdk-*-*.zip
Eindelijk hebben we instantclient_11_2
directory aangemaakt in /opt/oracle
voor Oracle instant-client 11.2.0.2.0. Hernoem deze map naar instantclient
(let op versienummer) en schakel ernaar:
sudo mv instantclient_11_2 instantclient
cd instantclient
Vervolgens moeten we verschillende extra mappen en symbolische links maken (let op het versienummer):
sudo ln -s /opt/oracle/instantclient/libclntsh.so.* /opt/oracle/instantclient/libclntsh.so
sudo ln -s /opt/oracle/instantclient/libocci.so.* /opt/oracle/instantclient/libocci.so
sudo ln -s /opt/oracle/instantclient/ /opt/oracle/instantclient/lib
sudo mkdir -p include/oracle/11.2/
cd include/oracle/11.2/
sudo ln -s ../../../sdk/include client
cd -
sudo mkdir -p lib/oracle/11.2/client
cd lib/oracle/11.2/client
sudo ln -s ../../../ lib
cd -
Maak een configuratiebestand aan met de naam van de directory waarin de Oracle instant-clientbibliotheken moeten worden gezocht en schakel dit in:
echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig
Voor zover er geen directory is /usr/include/php
in Ubuntu, maar de client zoekt er nog steeds naar, we zullen een symlink maken naar het equivalent ervan - php5:
sudo ln -s /usr/include/php5 /usr/include/php
Installatie van OCI8
Na eerdere acties is de oci8-extensie geïnstalleerd met pecl
commando:
sudo pecl install oci8
u wordt gevraagd om het pad naar de Oracle Instant Client, antwoord met:
instantclient,/opt/oracle/instantclient
Extensie-verbindingsbestand maken:
echo "; configuration for php oci8 module" | sudo tee /etc/php5/conf.d/oci8.ini
echo extension=oci8.so | sudo tee -a /etc/php5/conf.d/oci8.ini
Installatie van PDO_OCI
Download voor de installatie van PDO_OCI het van de peer-repository (pear.php.net).
Lijst met perenpakketten bijwerken:
sudo pecl channel-update pear.php.net
Download en plaats archief in tijdelijke map:
sudo mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
sudo pecl download pdo_oci
Archiefinhoud uitpakken:
sudo tar xvf PDO_OCI*.tgz
cd PDO_OCI*
Hier moeten we config.m4
wijzigen bestand omdat het geen informatie bevat over onze versie van Oracle Instant Client. Open het bestand en voeg wijzigingen toe die zijn gemarkeerd met "+" (let op versienummer):
sudo vim config.m4
Hieronder staat de diff
van 2 bestanden:
***************
*** 7,12 ****
--- 7,14 ----
if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then
PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3
+ elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
+ PDO_OCI_VERSION=11.2
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
PDO_OCI_VERSION=10.1
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
***************
*** 119,124 ****
--- 121,129 ----
10.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;
+ 11.2)
+ PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
+ ;;
*)
AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION)
;;
***************
Omgeving voorbereiden voor php-extensie met phpize
(php.net/manual/ru/install.pecl.phpize.php) commando:
sudo phpize
Pakketinstallatieprogramma configureren en pakket installeren (let op versienummer):
sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2
sudo make
sudo make install
Maak er een verbindingsbestand voor:
echo "; configuration for php PDO_OCI module" | sudo tee /etc/php5/conf.d/pdo_oci.ini
echo extension=pdo_oci.so | sudo tee -a /etc/php5/conf.d/pdo_oci.ini
Start apache opnieuw en controleer of extensies zijn geïnstalleerd:
sudo /etc/init.d/apache2 restart
php -m