Подружить Oracle и PHP

Обсуждение общих вопросов связанных с программой
ceskf
Сообщения: 2
Зарегистрирован:
05 ноя 2013, 10:35

Подружить Oracle и PHP

ceskf » 05 ноя 2013, 10:38

Добрый день. Не могу настроить связку. Скопировал Instant Client, прописал пути в Path, в опенсервере изменил path+winPath но все равно ошибка
OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in
Аватара пользователя
Максим
Сообщения: 5392
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 05 ноя 2013, 11:08

А после того, как вы в Windows изменили Path, вы саму программу (не сервер) перезапускали?
ceskf
Сообщения: 2
Зарегистрирован:
05 ноя 2013, 10:35

ceskf » 05 ноя 2013, 12:20

Да. перезапускал.

Добавлено спустя 52 минуты 50 секунд:
oci_client_version() - 0.0.0.0.0

Добавлено спустя 12 минут 11 секунд:
Не знаю почему но проблема решилась сменой версии ПХП с 5.3 на 5.4. Если кто знает почему так произошло ответьте.
Аватара пользователя
Максим
Сообщения: 5392
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 05 ноя 2013, 14:07

Расширение для 5.4. Для каждой версии php они разные.
NEGr
Сообщения: 12
Зарегистрирован:
24 фев 2014, 13:15

NEGr » 08 апр 2014, 12:58

Добрый день.
Не стал создавать новую ветку, решил написать в этой же.

Проблема та же: oracle.
Вводные:
ОС: Windows 7
Версия сервера:4.9.0
Версия Oracle:11.1.0
Версия PHP: 5.3.27(пробовал и другие версии)
Версия Apache:2.2.26(пробовал и другие версии)
Файл oci.dll на всякий случай был скопирован в папки с php и apache.
Строка extension=php_oci8_11g.dll в настройках php раскомментирована.
В настройках "Настройка использования переменой Path" выставлено: Свой Path.

При запуске скрипта :
<table border=1>
	<tr>
		<td><b>Номер кредита</b></td>
		<td><b>ФИО</b></td>
	</tr>
<?
	$c=OCILogon("xxx", "xxx", "xxx");
	$s = OCIParse($c, "select contract_nb, last_nm||' '||first_nm||' '||middle_nm from bpd.MW_DM_CUSTOMER_INFO where rownum<100");
	OCIExecute($s);
	while ($row = oci_fetch_array($s,OCI_NUM))
	{	
	?>
	<tr>
		<td><?print $row[0];?></td>
		<td><?print $row[1];?></td>
	</tr>
	<?
	}
	OCILogoff($c);
?> 
</table>
выдает ошибку : Warning: ocilogon() [function.ocilogon]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in C:\OpenServer\domains\mylocalhost\BPD\oracle.php on line 7

При изменении в настройках "Настройка использования переменой Path" на Свой Path+Win выдает сообщение о завершении работы программы Apache HTTP Server. Хотя сам сервер остается в рабочем состоянии.

В Denver все работает без ошибок(хот ядо этого тоже пришлось поплясать с версией модуля oracle для php).

Информация из php_info при использовании настройки только Свой Path:
oci8
OCI8 Support 	enabled
Version 	1.4.9
Revision 	$Id: 44bfa713983a99b3e59477f6532e5fb51b6dee94 $
Active Persistent Connections 	0
Active Connections 	0
Oracle Run-time Client Library Version 	0.0.0.0.0
Oracle Instant Client Version 	11.2
Temporary Lob support 	enabled
Collections support 	enabled

Directive	Local Value	Master Value
oci8.connection_class	no value	no value
oci8.default_prefetch	100	100
oci8.events	Off	Off
oci8.max_persistent	-1	-1
oci8.old_oci_close_semantics	Off	Off
oci8.persistent_timeout	-1	-1
oci8.ping_interval	60	60
oci8.privileged_connect	Off	Off
oci8.statement_cache_size	20	20
при использовании Свой Path +Win следующая:
oci8
OCI8 Support 	enabled
Version 	1.4.9
Revision 	$Id: 44bfa713983a99b3e59477f6532e5fb51b6dee94 $
Active Persistent Connections 	0
Active Connections 	0
Oracle Run-time Client Library Version 	11.1.0.6.0
Oracle Instant Client Version 	11.2
Temporary Lob support 	enabled
Collections support 	enabled

Directive	Local Value	Master Value
oci8.connection_class	no value	no value
oci8.default_prefetch	100	100
oci8.events	Off	Off
oci8.max_persistent	-1	-1
oci8.old_oci_close_semantics	Off	Off
oci8.persistent_timeout	-1	-1
oci8.ping_interval	60	60
oci8.privileged_connect	Off	Off
oci8.statement_cache_size	20	20
Что я делаю не так????
yarik.lev
Сообщения: 19
Зарегистрирован:
21 май 2014, 19:26

yarik.lev » 21 май 2014, 20:39

Всем привет
В продолжение подтверждаю такую же ситуацию!
Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in C:\OpenServer\domains\work.kl\test.php on line 16
вот данные с пхп инфо()
OCI8 Support	enabled
Version	1.4.10
Revision	$Id: cdb1302d3784cf3ece95ed7e5f70998212164e52 $
Active Persistent Connections	0
Active Connections	0
Oracle Run-time Client Library Version	0.0.0.0.0
Oracle Instant Client Version	10.2
Temporary Lob support	enabled
Collections support	enabled
А вот то, что меня смутило, может здесь ошибка?:
cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" "--with-pgo"
Клиент перекопировал везде, где только можна
ХЕЛП МИ!
Orion55
Сообщения: 7
Зарегистрирован:
24 дек 2015, 12:24

Re: Подружить Oracle и PHP

Orion55 » 24 дек 2015, 12:30

Оживлю тему.
Как всё-таки "скрестить" openserver, php и oracle? Все симптомы описаны выше.

По одной включаю библиотеки
extension=php_oci8.dll
extension=php_oci8_11g.dll
extension=php_pdo_oci.dll

При подключении любой ругается то на oci.dll, то на php.dll
Не запускается никак... :-(
yarik.lev
Сообщения: 19
Зарегистрирован:
21 май 2014, 19:26

Re: Подружить Oracle и PHP

yarik.lev » 24 дек 2015, 13:28

Orion55 писал(а):Оживлю тему.
Как всё-таки "скрестить" openserver, php и oracle? Все симптомы описаны выше.

По одной включаю библиотеки
extension=php_oci8.dll
extension=php_oci8_11g.dll
extension=php_pdo_oci.dll

При подключении любой ругается то на oci.dll, то на php.dll
Не запускается никак... :-(
А сходи ка в папку с самой пыхой(в мом случае это C:\OpenServer\modules\php\PHP-5.4) и посмотри какой там есть файлик php.dll или php5ts.dll?
Orion55
Сообщения: 7
Зарегистрирован:
24 дек 2015, 12:24

Re: Подружить Oracle и PHP

Orion55 » 08 янв 2016, 18:45

Расскажу более детально.

Есть база Oracle 10.2.0.5.0 находящаяся по адресу 192.168.1.10
В папку c:\instantclient_12_1_2 установлен Oracle Instant Client x32
Прописаны переменные среды
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORACLE_HOME=c:\instantclient_12_1_2
PATH=…;c:\instantclient_12_1_2
TNS_ADMIN=c:\instantclient_12_1_2
В папке c:\instantclient_12_1_2 находится файл tnsnames.ora следующего содержания
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
Программа PLSQL Developer с базой Oracle соединяется без проблем.
Но необходимо получить доступ к базе из php.
Установлен OpenServer последней версии.
Установлен в качестве рабочих PHP 5.6 и Apache 2.4
Для подключения к Oracle раскомментировал в файле php.ini строку «extension=php_pdo_oci.dll»
Однако, при вводе в консоле команды «php -ri oci8»
Warning: PHP Startup: Unable to load dynamic library 'c:/openserver/modules/php/PHP-5.6/ext/php_pdo_oci.dll' - Не найден указанный модуль. in Unknown on line 0
Модуль в этом каталоге есть.

Аналогично при extension=php_oci8_12c.dll
Warning: PHP Startup: Unable to load dynamic library 'c:/openserver/modules/php/PHP-5.6/ext/php_oci8_12c.dll' - Не найден указанный модуль.
Модуль также присутствует.
Как подключиться из php к базе Oracle через pdo?
yarik.lev
Сообщения: 19
Зарегистрирован:
21 май 2014, 19:26

Re: Подружить Oracle и PHP

yarik.lev » 08 янв 2016, 20:03

Orion55 писал(а):Расскажу более детально.

Есть база Oracle 10.2.0.5.0 находящаяся по адресу 192.168.1.10
В папку c:\instantclient_12_1_2 установлен Oracle Instant Client x32
Прописаны переменные среды
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORACLE_HOME=c:\instantclient_12_1_2
PATH=…;c:\instantclient_12_1_2
TNS_ADMIN=c:\instantclient_12_1_2
В папке c:\instantclient_12_1_2 находится файл tnsnames.ora следующего содержания
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
Программа PLSQL Developer с базой Oracle соединяется без проблем.
Но необходимо получить доступ к базе из php.
Установлен OpenServer последней версии.
Установлен в качестве рабочих PHP 5.6 и Apache 2.4
Для подключения к Oracle раскомментировал в файле php.ini строку «extension=php_pdo_oci.dll»
Однако, при вводе в консоле команды «php -ri oci8»
Warning: PHP Startup: Unable to load dynamic library 'c:/openserver/modules/php/PHP-5.6/ext/php_pdo_oci.dll' - Не найден указанный модуль. in Unknown on line 0
Модуль в этом каталоге есть.

Аналогично при extension=php_oci8_12c.dll
Warning: PHP Startup: Unable to load dynamic library 'c:/openserver/modules/php/PHP-5.6/ext/php_oci8_12c.dll' - Не найден указанный модуль.
Модуль также присутствует.
Как подключиться из php к базе Oracle через pdo?
Проверь, есть ли это в пазе:"C:\OpenServer\modules\php\PHP-5.6;", возможно поможет, еще есть вариант что длл имеет определенные зависимости, тоесть для запуска ей чегото не хватает, oci.dll например. Все эти зависимости можно пересмотерть с помощью утилитки http://www.dependencywalker.com/
Ответить