Linux + Apache + PHP + Oracle Проблема!

Сенцун

Новичок
Всем привет, помогите, пожалуйста, решить проблему.
CentOS 5.8
Apache 2.2.3
PHP 5.1.6
Oracle 11.2.0.1.0
Проблема состоит в том, что запрос к базе в терминале обрабатывается, а в браузере нет. Подробнее.

Есть простой скрипт:
PHP:
<html>
<body>
<?php
$c = oci_connect('username', 'password', 'ORCL');
$q = 'SELECT * FROM tab1';
$s =  oci_parse($c, $q);

oci_execute($s, OCI_DEFAULT);

echo "<table border=2>\n";
while (oci_fetch($s)) {
   echo "<TR><TD>".oci_result($s, 'DATA')."</TD></TR>\n";
}
echo "</table>\n";

oci_close($c);
?>
</body>
</html>
Когда запускаю скрипт в терминале, он нормально отрабатывается:
HTML:
<html>
<body>
<table border=2>
<TR><TD>blah0</TD></TR>
<TR><TD>blah1</TD></TR>
</table>
</html>
</body>
А в браузере нет, рисует пустую таблицу:
HTML:
<html>
<body>
<table border=2>
</table>
</body>
</html>
 

Adelf

Administrator
Команда форума
Вполне вероятно у www юзера нет прав на что-то(в данном случае оракловое). В любом случае надо включить ошибки и смотреть. Хотя бы логи.
 

Сенцун

Новичок
Спасибо, вот такие ошибки высыпались:

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 in /var/www/html/base.php on line 7
Warning: oci_connect() [function.oci-connect]: Error while trying to retrieve text for error ORA-01804 in /var/www/html/base.php on line 7
Warning: oci_parse() expects parameter 1 to be resource, boolean given in /var/www/html/base.php on line 10
Warning: oci_execute() expects parameter 1 to be resource, null given in /var/www/html/base.php on line 12
Warning: oci_fetch() expects parameter 1 to be resource, null given in /var/www/html/base.php on line 15
Warning: oci_close() expects parameter 1 to be resource, boolean given in /var/www/html/base.php on line 30

С ORACLE_HOME and LD_LIBRARY_PATH вроде всё в порядке, почему apache ругается не пойму.
 

Adelf

Administrator
Команда форума
ORA-01804: failure to initialize timezone information
Cause: The timezone information file was not properly read.

Думай дальше :) В линуксах Оракла не юзал.
 

Сенцун

Новичок
oci_client_version() отрабатывает нормально
PHP:
<html>
<body>
<?php
echo "<table border=2>\n";
$i = 0;
while ($i < 0) {
   echo "<TR><TD>$i</TD>";
   $i++
   echo  "<TD>Client version: ".oci_client_version()."</TD></TR>\n";
}
echo "</table>\n";
?>
</body>
</html>
рисует таблицу:
 

Adelf

Administrator
Команда форума
Сенцун
Да смысл то в версии клиента? Он при попытке подконнектиться не может получить доступ к timezone файлу.
судя по гуглу эти файлы содержатся в путях с окончаниями "oracore/zoneinfo". Ищи, смотри.. пробуй получить доступ. Настрой права на папки..
 

Сенцун

Новичок
Всем спасибо, разобрался, нужно было пересобрать oci8, смущало то, что в терминале сразу всё заработало.
 
Сверху