2017-01-18 5 views
1

У меня есть Oracle Express 11g, установленный на Linux-сервере Slackware. Я могу подключиться к нему и запускать запросы. У меня установлен apache и php и установлен oci8. phpinfo() показывает, что oci8 загружен и включен. Для следующей простой PHP скрипт на веб-странице отображаются:Страница не отображается с apache и php и OCI8 и Oracle Express 11g

<?php echo "Hello World!!!"; ?> 

Так PHP в Apache работает. Теперь следующее простое подключение к оракулу и показать версию:

<html> 
<body> 
Oracle Version <br/> 
<?php 

$conn = oci_connect('SYSTEM', 'password', 'localhost/XE'); 

$stid = oci_parse($conn, 'select banner from v$version'); 
oci_execute($stid); 

echo "<table>\n"; 
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) { 
    echo "<tr>\n"; 
    foreach ($row as $item) { 
     echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n"; 
    } 
    echo "</tr>\n"; 
} 
echo "</table>\n"; 

?> 
</body> 
</html> 

Это показывает следующее из источника просмотра в веб-браузере:

<html> 
<body> 
Oracle Version <br/> 
<table> 
</table> 
</body> 
</html> 

Однако, когда я бегу сценарий с/USR/bin/php oratest.php, он выводит следующее правильно:

<html> 
<body> 
Oracle Version <br/> 
<table> 
<tr> 
    <td>Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production</td> 
</tr> 
<tr> 
    <td>PL/SQL Release 11.2.0.2.0 - Production</td> 
</tr> 
<tr> 
    <td>CORE  11.2.0.2.0  Production</td> 
</tr> 
<tr> 
    <td>TNS for Linux: Version 11.2.0.2.0 - Production</td> 
</tr> 
<tr> 
    <td>NLSRTL Version 11.2.0.2.0 - Production</td> 
</tr> 
</table> 
</body> 
</html> 

Как это возможно. Зачем работать в командной строке php и apache, обслуживающий один и тот же php-скрипт, не работает. И phpinfo(), обслуживаемый одним и тем же Apache, показывает, что oci8 установлен и включен.

Пожалуйста, помогите, если у вас есть идеи заблаговременно.

ответ

0

Ошибки произошли из-за неправильной установки ORACLE_HOME и LD_LIBRARY_PATH для путей установки моментального клиента oracle и oracle express 11g и т. Д. Я использовал директиву putenv() php при запуске php-кода и работал без ошибок.

putenv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe"); 
putenv("LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib:/usr/lib64/oracle/12.1/client64/lib"); 
+0

I СИЛЬНО советую не использовать putenv(). Это было очень проблематично в прошлом. Вместо этого добавьте переменные в правильный сценарий инициализации Apache, например/etc/sysconfig/httpd в RH Linux. Прочтите бесплатную книгу PHP и Oracle http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html –

+0

Я нахожусь на Slackware и не могу заставить ее работать каким-либо другим способом. –

+0

Продолжайте смотреть. Я сомневаюсь, что они удалили функцию из Apache. –

 Смежные вопросы

  • Нет связанных вопросов^_^