oci_connect () работает только из командной строки

Хорошо, поэтому у меня есть эта ужасная проблема с oci, apache, php и suse. Прежде всего, версии:

PHP 5.3.15 (cli) Apache/2.2.22 (Linux/SUSE) OCI8 1.4.9 SUSE 12.2 32 bit Oracle client 10.2.0.4 

проблема

У меня действительно простой файл php:

 <?php error_reporting(E_ALL); ini_set('display_errors', '1'); oci_connect('user', 'passwd', 'host/sid'); ?> 

Когда я запускаю его из командной строки, он выполняет штраф:

 machine:~ # php oci.php machine:~ # 

Но когда я запускаю его в браузере, он дает мне:

 Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories 

Конфигурация Apache

Я уже давно борюсь с этой проблемой, и я уверен, что моя конфигурация Apache правильная.

Я экспортирую все необходимые переменные перед запуском любого процесса apache – я добавил

 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/oracle/home/lib; export LD_LIBRARY_PATH ORACLE_HOME=/path/to/oracle/home; export ORACLE_HOME TNS_ADMIN=/path/to/oracle/home/network/admin; export TNS_ADMIN NLS_LANG=POLISH_POLAND.EE8MSWIN1250; export NLS_LANG 

в начале сценария /etc/init.d/apache2 (я запускаю apache с помощью /etc/init.d/apache2 start ).

Apache работает от пользователя wwwrun , который находится в oinstall и dba :

 machine:~ # cat /etc/apache2/uid.conf User wwwrun Group www machine:~ # id wwwrun uid=30(wwwrun) gid=8(www) groups=8(www),113(oinstall),114(dba) machine:~ # l $ORACLE_HOME total 216 drwxr-xr-x 48 oracle oinstall 4096 Jan 25 17:07 ./ drwxrwxr-x 3 oracle oinstall 4096 Jan 25 17:01 ../ ... machine:~ # 

Возможная проблема

У меня нет каких-либо переменных Environment разделе Environment в phpinfo(); выход – это может быть проблемой? Если да, как я могу это исправить? Это какая-то проблема безопасности? Я читал о таких проблемах, когда SELinux включен, но у меня его нет, мой брандмауэр выключен.

Решение?

Любая помощь будет принята с благодарностью!

Задача решена! Благодаря этим инструкциям ( настройка среды Oracle ) и ответ ken_yap на этот поток.

Чтобы поместить переменные в раздел « Среда» Apache, вам просто нужно добавить их в файл /etc/sysconfig/apache2 : LD_LIBRARY_PATH=/path/to/oracle/lib .

Другим решением (которому не нужен root-доступ) является добавление этих строк на страницу php:

 putenv("ORACLE_HOME=/opt/app/oracle/product/11.2.0/db_1"); putenv("LD_LIBRARY_PATH=/opt/app/oracle/product/11.2.0/db_1/lib:/lib:/usr/lib"); 

С уважением