Проблема с установкой php_pdo_oci в Ubuntu 14.04.1 LTS
Мне нужно установить PDO_OCI для PHP на моем локальном хосте (Ubuntu). Я не эксперт в пакетах / зависимостях Linux, поэтому, пожалуйста, поправьте меня, если где-то в моих мыслях я ошибаюсь. Когда я пытаюсь использовать pecl (sudo pecl install pdo_oci
) это говорит:
pear/PDO_OCI requires PHP extension "pdo" (version >= 1.0)
но верю PDO установлен (ls -la /usr/lib/php5/20121212/ | grep -c pdo.so
говорит 1). В Интернете я нашел учебник по сборке pdo_oci ( http://bencornwell.com/112/), поэтому я последовал и с некоторой борьбой получил pdo_oci.so
, К сожалению, он не загружается, давая мне сообщение:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/pdo_oci.so' - /usr/lib/php5/20121212/pdo_oci.so: undefined symbol: php_pdo_stmt_delref in Unknown on line 0
Я предполагаю, что это может быть что-то с несовместимостью версии php / pdo_oci, но у меня нет знаний и опыта, чтобы знать, как справиться с этой ситуацией.
Что я могу сделать, чтобы сделать эту работу?
Информация о моей системе:
Ubuntu 14.04.1 LTS
PHP 5.5.9-1ubuntu4.5 (cli) (сборка: 29 октября 2014 г., 11:59:10)
2 ответа
Я считаю, что справился с этим сам. Было две вещи, которые мне нужно было изменить.
1. pdo_oci.so загружался до pdo.so. Я изменил порядок, и сообщение об ошибке было изменено.
2. Я скомпилировал pdo_oci непосредственно из исходного кода для своей версии php (я следовал инструкциям на: http://blog.appwhoosh.com/install-pdo_oci-oci8-extensions-for-ubuntu-14-10/).
Теперь расширение работает отлично.
После установки драйверов Oracle вы можете использовать этот класс здесь, а затем вам просто нужно изменить соединение PDO с чем-то вроде
$pdo = new PDO("oci:dbname=mydatabase;charset=utf8", "user", "password");
в
$pdo = new PDOOCI\PDO("mydatabase", "user", "password");
Остальные должны работать точно так же, как если бы вы использовали объект PDO.