Я сразу оговариваюсь, что настраиваем не рабочий, а developer сервер, т.к. используемый здесь бесплатный Oracle Express Edition предназначен только для разработчиков, не для промышленной эксплуатации. Всё описанное верно для Debian, но также должно быть применимо к Ubuntu. Итак, есть желание научиться обращаться из PHP к Oracle. Нам понадобится сам сервер БД и расширение PHP для доступа к нему. Стек получается такой: Гугль вывел на хорошую статью на DebianWorld.ru, "но лажа всёже вышла". Не знаю как у вас, а у меня почему-то aptitude update спотыкался на получении данных с oracle, пришлось качать deb-ы и ставить руками. Если у вас тоже не получится, то попробуйте как я. Мой тестовый сервер потребовал дополнительной настройки, вам возможно не понадобится. Из статьи: "Oracle XE требует минимум 1GB памяти, поэтому если такового объема на мишине нет, то необходимо сделать свап соответствующего размера и подключить его" только … count=1000 я заменил на … count=1024, чисто по наитию. Если apt не может поставить оракловые пакеты автоматически, делам так: Код (Text): wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-client_10.2.0.1-1.2_i386.deb wget https://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb Затем ставим через dpkg -i имя_пакета.deb. У меня dpkg жаловался, что не хватает пары пакетов (имен не помню), я их соответственно поставил через aptitude и снова сделал dpkg -i — всё получилось. Сервер Oracle стартовал, доступ я проверил: Код (Text): $ sqlplus system/мой_пароль@//localhost/XE Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production SQL> SELECT 'Hello world!' FROM dual; 'HELLOWORLD! ------------ Hello world! SQL> exit Очередь за PHP. Расширение php_oci8 ставится через PECL. Действовал по этому сценарию: How to install the OCI8 Oracle extension for PHP5 in Debian Lenny. Встало без заморочек. Apache перезапустил, стал тестировать примеры которые нашел в доках по функциям PHP OCI. Обнаружил а) В переменных среды процесса Apache отсутствует ORACLE_HOME, соответственно расширение обламывается с матами. Вродебы переменная должна устанавливаться при старте oracle. Не особо разбираюсь в администрировании Linux, просто добавил в /etc/apache2/envvars Код (Text): # Oracle/XE home for php_oci export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server и рестартовал веб-сервер б) Оракловый пользователь HR имеет какбы сэкспаренный пароль, поправил его в sqlplus: Код (Text): ALTER USER hr IDENTIFIED BY "weclome"; После чего примеры стали запускаться!!! Код (PHP): <?php $conn = oci_connect('hr', 'welcome', 'localhost/XE'); if (!$conn) die(oci_error()); oci_execute($stid = oci_parse($conn, 'SELECT * FROM employees')); $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS); foreach ($row as $name => $value) echo "<b>{$name}</b>: {$value}<br/>\n"; Во второй части статьи на DebianWorld описывается как разрешить обращение к серверу БД с других компьютеров сети. В принципе, если Oracle нужен только как БД для веб-сервера, то это лишнее. И еще описано как установить SSH-туннели c линуксовых рабочих станций. Если хотите могу рассказать как я пробрасываю соединение со своей винды через putty для виндового sqlplus и как настраиваю Navicat через его собственный тоннель. Надеюсь мой опыт будет вам полезен.
Некошерно это, ставить ораклю и веб-сервер на одну кастрюлю И кстати оракля (хотя хз, экспресс не трогал) тащщит с собой свой апач (тока тссс, я этого не говорил)
Молодец земляк, всё правильно сказал. Только подходящая кастрюля у меня одна ))) Установщик не спрашивает ставить ему свой веб-доступ или нет, ставит — на порт 8080. С моим апачем не пересеклось. Ваше дело на какой из своих серверов его приземлять. В продакш конечно лучше БД держать на отдельном хосте, но эта тема про сервер разработчиков.
я просто к тому, что во времена активной работы с ораклями, там со взрослыми версиями девятки поставлялись исходники php, поэтому делал только что-то вроде: ./configure --with-apxs=$ORACLE_HOME/Apache/Apache/bin/apxs --prefix=$ORACLE_HOME --with-config-file-path=$ORACLE_HOME/Apache/Apache/conf --with-oci9=$ORACLE_HOME --disable-rpath После чего оставалось только раскоментировать в родном апаче обработку php. Вобщем минимализм во всей красе, 1 апач, 1 БД, 1 пхп