उत्तर इस लेख (रूसी में) की एक प्रतिकृति है जो बदले में कुछ सुधारों के साथ इस पोस्ट पर आधारित है। कई दिनों की निष्फल खोज के बाद इसने मेरे लिए सुचारू रूप से काम किया।
आवश्यकताएं:
आपके पास व्यवस्थापकीय विशेषाधिकार होने चाहिए
आपके पास निम्न पैकेज के साथ php5 स्थापित होना चाहिए:
sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo
आपके पास libaio1 पुस्तकालय स्थापित होना चाहिए:
sudo apt-get install libaio1
Oracle Instant Client की स्थापना
Oracle वेबसाइट (oracle.com/technetwork/database/features/instant-client/index-097480.html) से अपने प्रोसेसर आर्किटेक्चर और OS के लिए Oracle इंस्टेंट क्लाइंट डाउलोड करें।
Linux के लिए तत्काल क्लाइंट के 2 विकल्प हैं:Linux के लिए RPM पैकेज, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux, आदि.ZIP संग्रह - अन्य सभी के लिए जो RPM का समर्थन नहीं करते हैं।
डाउनलोड करने के लिए 2 फ़ाइलें हैं:
इंस्टेंट क्लाइंट-बेसिक — Oracle इंस्टेंट क्लाइंट ही
तत्काल क्लाइंट-एसडीके - अनुप्रयोग विकास के लिए पुस्तकालयों का सेट
Oracle तत्काल क्लाइंट के लिए निर्देशिका बनाएं (/ऑप्ट निर्देशिका सॉफ़्टवेयर एक्सटेंशन के लिए आरक्षित है जो इस उद्देश्य के लिए उपयुक्त है):
sudo mkdir -p /opt/oracle/
डाउनलोड की गई फ़ाइलों को /opt/oracle में ले जाएं और गंतव्य फ़ोल्डर में स्विच करें (यह मानते हुए कि आपने "ज़िप" संग्रह को अपने उपयोगकर्ता "डाउनलोड" निर्देशिका में डाउनलोड किया है):
sudo mv ~/downloads/instantclient-*.zip /opt/oracle/
cd /opt/oracle/
डाउनलोड किए गए संग्रह निकालना:
sudo unzip instantclient-basic-*-*.zip
sudo unzip instantclient-sdk-*-*.zip
अंत में हमारे पास instantclient_11_2
है /opt/oracle
. में बनाई गई निर्देशिका Oracle तत्काल क्लाइंट के लिए 11.2.0.2.0। इस निर्देशिका का नाम बदलकर instantclient
कर दें (संस्करण संख्या पर ध्यान दें) और उस पर स्विच करें:
sudo mv instantclient_11_2 instantclient
cd instantclient
आगे हमें कई अतिरिक्त निर्देशिकाएँ और सिम्लिंक बनाने होंगे (संस्करण संख्या पर ध्यान दें):
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 -
निर्देशिका के नाम वाली कॉन्फ़िगरेशन फ़ाइल बनाएं जहां Oracle तत्काल क्लाइंट लाइब्रेरी की खोज की जानी है और इसे सक्षम करना है:
echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig
जहाँ तक निर्देशिका नहीं है /usr/include/php
उबंटू में, लेकिन क्लाइंट अभी भी इसकी खोज कर रहा है, हम इसके समकक्ष सिमलिंक बनाएंगे - php5:
sudo ln -s /usr/include/php5 /usr/include/php
OCI8 की स्थापना
पिछली क्रियाओं के बाद oci8 एक्सटेंशन pecl
. के साथ स्थापित किया गया है आदेश:
sudo pecl install oci8
आपको Oracle तत्काल क्लाइंट के पथ के लिए संकेत दिया जाएगा, इसके साथ प्रतिक्रिया दें:
instantclient,/opt/oracle/instantclient
एक्सटेंशन कनेक्शन फ़ाइल बनाना:
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
PDO_OCI की स्थापना
PDO_OCI की स्थापना के लिए इसे नाशपाती भंडार (pear.php.net) से डाउनलोड करें।
नाशपाती पैकेज सूची अपडेट करें:
sudo pecl channel-update pear.php.net
डाउनलोड करें और संग्रह को अस्थायी निर्देशिका में रखें:
sudo mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
sudo pecl download pdo_oci
संग्रह सामग्री निकालें:
sudo tar xvf PDO_OCI*.tgz
cd PDO_OCI*
यहां हमें config.m4
में संशोधन करना होगा फ़ाइल क्योंकि इसमें Oracle इंस्टेंट क्लाइंट के हमारे संस्करण की जानकारी नहीं है। फ़ाइल खोलें और "+" के साथ चिह्नित परिवर्तन जोड़ें (संस्करण संख्या पर ध्यान दें):
sudo vim config.m4
नीचे diff
है 2 फाइलों में से:
***************
*** 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)
;;
***************
PHP एक्सटेंशन के लिए phpize
. के साथ वातावरण तैयार करें (php.net/manual/ru/install.pecl.phpize.php) कमांड:
sudo phpize
पैकेज इंस्टॉलर कॉन्फ़िगर करें और पैकेज इंस्टॉल करें (संस्करण संख्या पर ध्यान दें):
sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2
sudo make
sudo make install
इसके लिए कनेक्शन फाइल बनाएं:
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
अपाचे को पुनरारंभ करें और जांचें कि क्या एक्सटेंशन इंस्टॉल किए गए थे:
sudo /etc/init.d/apache2 restart
php -m