Функции OCI8 не найдены при запуске apache с php5

Я пытаюсь настроить сервер для проекта в моем классе баз данных. Я буду писать проект в php, развертывать его через apache и подключаться к удаленному серверу oracle. У меня проблемы с порцией соединения оракула. У меня есть модуль OCI8, установленный с мгновенным клиентом oracle версии 10.2. Я думал, что это работает, потому что, когда я запускал следующую программу с консоли, я получил правильный результат.
Программа:

<?php $conn = oci_connect("asdf", "asdf", "asdf"); if (!$conn) { die("connection error\n"); } $stid = oci_parse($conn, 'SELECT * FROM PARTS'); if (!$stid) { die("statement parsing error\n"); } $r = oci_execute($stid); if (!$r) { die("execution error\n"); } print "<table border='1'\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { print "<tr>\n"; foreach ($row as $item) { print "\t<td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n"; } print "</tr>\n"; } print "</table>\n"; oci_free_statement($stid); oci_close($conn); ?> 

Результат:
<table border='1'>
<tr>
<td>1</td>
<td>wrench</td>
<td>silver</td>
</tr>
<tr>
<td>2</td>
<td>hammer</td>
<td>brown</td>
</tr>
</table>

Поэтому я подумал, что все в порядке. Но когда я посещаю одну и ту же страницу php в браузере, я получаю следующее сообщение об ошибке:
Fatal error: Call to undefined function oci_connect() in /home/eric/apache2/htdocs/realestate/basicQuery.php on line 2
Я думал, это может означать, что две разные версии php стали использоваться для командной строки и в apache, поэтому я запустил phpinfo (); для обоих. Но они оба вернулись с той же информацией php (PHP Version 5.2.10-2ubuntu6.4). Они используют разные файлы php.ini (/etc/php5/apache2/php.ini и /etc/php5/cli/php.ini), но оба они точно такие же. Я не знаю, где еще искать что-то, что может быть другим в одной среде по сравнению с другой.
Спасибо за любую помощь!

PHP должен знать, где загрузить его расширение (это мосты между PHP и поставляемыми Oracle библиотеками). Поскольку он работает с CLI, похоже, у вас установлен пакет.

Если файлы ini совпадают, вам также необходимо проверить:

1) вы не забыли перезапустить apache после настройки oracle libs?

2) ваш веб-сервер работает как chroot?

3) какие разрешения для расширения oci8? (т. е. он читается с помощью веб-сервера uid)

Вам также нужно добавить путь к файлам oracle .so на ваш ld.so.conf и запустить ldd или настроить ваши Env vars – но это даст другую ошибку тому, что вы описали, если вы пропустите его.

НТН

C.

У вас есть расширение oci8, установленное в вашей системе? Убедитесь, что если он не будет установлен, следуйте приведенным ниже ссылкам?

Для понимания см. Это. Установка расширения oci8 в linux для php?

Для получения четкой инструкции по установке обратитесь к этой ссылке. http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html

Проверьте файл php.ini, есть ли у вас следующее.

 extension=oci.so extension_dir="Your path where .so files are present" 

После установки вы должны перезапустить apache . Дайте мне знать, если это вам поможет.

Это может быть много чего, модуль OCI8 установлен неправильно, не загружен apache или даже зависимость не установлена.

Установка OCI8

Самый простой способ установить OCI8 – использовать pecl:

pecl install oci8-2.0.12 # for PHP 5.5/6

Входящий модуль

Затем вам нужно загрузить его, разместив extension=oci8.so в своем php.ini .

Теперь убедитесь, что в вашей конфигурации extension_dir oci8.so файл oci8.so Это можно найти в phpinfo или выполнить php -i | grep extension_dir php -i | grep extension_dir . Например, у меня есть /usr/lib/php/20131226 .

Перезапустите Apache, выполнив apachectl restart и oci8 есть oci8 в вашей phpinfo конфигурация oci8.

Милосердный выстрел

Если вы все пробовали, и это не сработало (что уже случилось со мной), убедитесь, что libaio1 установлен в вашей системе. Если это не так, установите его, выполнив apt install libaio1 и перезагрузив apache. В моем случае это трюк. Надеюсь, это поможет.