The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Связка Apache+PHP+Oracle"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 24-Окт-07, 19:10 
Доброго всем времени суток.

Проблема такая: ставлю Apache, потом PHP c клиентом Оракла. При попытке через броузер открыть файл *.php Арасhе не вызывает интерпретатор ПХП для разборки этого файла, а нагло суёт его клиенту (в броузер).

Последовательность установки такая:
1. Чистая FreeBSD 6.2.
2. С ftp://ftp.freebsd.org качаю и устанавливаю следущее:
   - libiconv-1.9.2_2
   - libxml2-2.6.30
   - oracle8-client-0.1.1_1
   - perl-5.8.8
   - pkg-config-0.22
   - openssl-0.9.8e_1.tbz
3. С http://httpd.apache.org качаю исходники Араche 2.2.6
4. С http://www.php.net качаю исходники php-5.2.4
5. По материалам статьи http://www.opennet.me/openforum/vsluhforumID8/4334.html совершаю следующее шаманство:

setenv LDFLAGS "-lpthread -L/usr/local/oracle8-client/lib -lclntst8 -lcompat -lm"

6. Компилирую Апач вот так:

./configure --enable-MODULE=shared --enable-ssl --disable-actions --disable-alias --disable-asis --disable-auth --disable-autoindex --disable-access --disable-cgid --disable-charset-lite --disable-env --disable-imagemap --disable-include --disable-log-config --disable-negotiation --disable-setenvif --disable-status --disable-userdir --enable-so

7. Компилирую ПХП вот так:

./configure --prefix=/usr/php524 --with-regex=php --disable-all --enable-libxml --with-libxml-dir=/usr/locall --with-apxs2=/usr/local/apache2/bin/apxs --disable-ipv6 --with-zlib --enable-zip --with-oci8=/usr/local/oracle8-client

   При этом ещё исправляю файл

cd ext/oci8
EDIT oci8_lob.c, near line 340
add compiler commands to make text:
===================================
        if (is_clob) {
#ifdef OCI_NLS_CHARSET_MAXBYTESZ
                PHP_OCI_CALL_RETURN(connection->errcode,
OCINlsNumericInfoGet, (connection->env, connection->err, &bytes_per_char,
OCI_NLS_CHARSET_MAXBYTESZ));

                if (connection->errcode != OCI_SUCCESS) {
                        php_oci_error(connection->err, connection->errcode TSRMLS_CC);
                        PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
                        return 1;
                }
#else
                bytes_per_char = 4;
#endif
        } else {
                /* BLOBs don't have encoding, so bytes_per_char == 1 */
        }

===================================
added lines:
#ifdef OCI_NLS_CHARSET_MAXBYTESZ



#else
                bytes_per_char = 4;
#endif
===================================

8. Компиляция ошибок не выдаёт, модуль libphp5.so появляется в ..../apache2/modules, в httpd.conf прописывается:
LoadModule php5_module        modules/libphp5.so

туда же я прописываю ручками:
AddType  application/x-httpd-php5 .php
AddType  application/x-httpd-php5-source .phps
AddHandler application/x-httpd-php5 .php .php5 .php4 .php3 .phtml

DirectoryIndex insex.html index.php

9. запускаю Апач, он стартует с одним предупреждением:
[Wed Oct 24 22:55:42 2007] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

10. При попытке открыть *.html файл всё классно, а при попытке открыть *.php - увы, только передача содержимого файла на клиента.


Конфигурация Апача:
# /usr/local/apache2/bin/httpd -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_filter.c
  mod_ssl.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_cgi.c
  mod_dir.c
  mod_so.c

При попытке поставить Апач из портов - ситуация такая же (пытался ещё 2.0.61 поставить).

Вопросы такие:
1. Если кто сталкивался с такой проблемой (апач вместо парсинга пхп-файла передаёт его на клиента) - напишите плииииз...
2. Если кто знает, как вкомпилить ПХП 5 в Апач 2.2.6 статически напишите пожалуйста.
RTFM читал, ответов не нашёл....

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Связка Apache+PHP+Oracle"  
Сообщение от konst email(??) on 25-Окт-07, 01:11 

>Вопросы такие:
>1. Если кто сталкивался с такой проблемой (апач вместо парсинга пхп-файла передаёт
>его на клиента) - напишите плииииз...
>2. Если кто знает, как вкомпилить ПХП 5 в Апач 2.2.6 статически
>напишите пожалуйста.
>RTFM читал, ответов не нашёл....

Все четко и грамотно написано. Respect.

Хочу помочь - не знаю как :)
Мои идеи: СМ.
1. /var/log/httpd/...
2. php.ini
3. httpd.conf : AddModule mod_php5.c
4. про oracle забыть пока не начнет работать php

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Связка Apache+PHP+Oracle"  
Сообщение от angra (ok) on 25-Окт-07, 10:14 
А вы уверены что вам нужен AddHandler? Обычно нужен только AddType  application/x-httpd-php5 .php, плюс не обязательно что будет именно application/x-httpd-php5, может и просто application/x-httpd-php быть

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 12:25 
Спасибо большое за советы, PHP запустился, помогло следующее:

1. в httpd.conf прописал:
LoadModule php5_module        modules/libphp5.so

AddType  application/x-httpd-php .php
AddType  application/x-httpd-php-source .phps

DirectoryIndex insex.html index.php

(на AddModule mod_php5.c Апач ругался неприлично)

2. создал такую переменную (путь к ini файлу для PHP)
setenv PHPRC=/usr/php524/lib/

Теперь ПХПшные файлы правильно парсятся на сервере. В частности отрабатывает phpinfo()


Возникла проблема с подключением к Ораклу:
1. в файл tnsnames.ora внёс новую запись:
elt =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ora10)
    )
  )

2. Установил переменные окружения:
setenv ORACLE_HOME /usr/local/oracle8-client
setenv LD_LIBRARY_PATH $ORACLE_HOME/lib
setenv NLS_LANG american_america.cl8iso8859p5

3. Создал файл ora_test.php следующего содержания:
<?php
    print '1111111111111111111111111111111111';

    $conn = OCILogon("<user>", "<password>", "elt");

    print '2222222222222222222222222222222222';
?>

4. На фаерволе открыл порт 1521 для входа и выхода. (потом даже вообще снял фаервол)

5. phpinfo() касательно Ораклового клиента выдаёт следующее:

oci8

OCI8 Support                    enabled
Version                         1.2.3
Revision                        $Revision: 1.269.2.16.2.37 $
Active Persistent Connections   0
Active Connections              0
Oracle Version                  8.1
Compile-time ORACLE_HOME        /usr/local/oracle8-client
Libraries Used                  no value
Temporary Lob support           enabled
Collections support             enabled

Directive                       Local Value     Master Value
oci8.default_prefetch           10              10
oci8.max_persistent             -1              -1
oci8.old_oci_close_semantics    0               0
oci8.persistent_timeout         -1              -1
oci8.ping_interval              60              60
oci8.privileged_connect         Off             Off
oci8.statement_cache_size       20              20


Проблема:
при попытке выполнить этот файл наглухо виснет функция OCILogon.
Пользователь и пароль в БД созданы, пользователь имеет гранты на соединение, селекты и т.д. - т.е. под ним можно заходить в БД (проверено).

Вопросы:
1. Может кто-то может подсказать как проверить работоспособность ораклового клиента?
2. Будет ли работать клиент 8.1 с сервером БД 10g?
3. Есть ли какие-нибудь альтернативные клиенты Оракла, кроме стандартного из портов?
4. Если ставить линуксового клиента Оракла, то потребуется ли ставить линуксолятор на FreeBSD?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Связка Apache+PHP+Oracle"  
Сообщение от konst email(??) on 25-Окт-07, 13:59 
>[оверквотинг удален]
>    (ADDRESS_LIST =
>      (ADDRESS = (PROTOCOL = TCP)(HOST =
>192.168.0.11)(PORT = 1521))
>    )
>    (CONNECT_DATA =
>      (SID = ora10)
>    )
>  )
>Вопросы:
>1. Может кто-то может подсказать как проверить работоспособность ораклового клиента?

sqlplus @elt

см. у клиента в bin

>2. Будет ли работать клиент 8.1 с сервером БД 10g?

Да

>3. Есть ли какие-нибудь альтернативные клиенты Оракла, кроме стандартного из портов?
>4. Если ставить линуксового клиента Оракла, то потребуется ли ставить линуксолятор на
>FreeBSD?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 15:18 
>sqlplus @elt
>
>см. у клиента в bin
>

У того клиента Оракла, который идёт в портах по умолчанию (oracle8-client-0.1.1_1) нету sql+.... вот в чём беда.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Связка Apache+PHP+Oracle"  
Сообщение от SubGun (ok) on 25-Окт-07, 10:54 
>10. При попытке открыть *.html файл всё классно, а при попытке открыть *.php - увы, только передача содержимого файла на клиента.

Попробуйте:

ъ# echo 'application/x-httpd-php         php' < /usr/local/etc/apache22/mime.types
# echo 'application/x-httpd-php-source  phps    phtml' < /usr/local/etc/apache22/mime.types
# apachectl restart

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 12:29 
ПХП заработал, спасибо.
Теперь вопросы с подключением к Ораклу (см пост 4, он каким-то образом перед постом 3 оказался.....)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 21:48 
Люди, ещё подскажите, пожалуйста, вот чего: у Анархиста в статье http://www.nixp.ru/articles/freebsd_apache_php_oracle после установки порта oracle8-client-0.1.1_1 функция phpinfo() в раздели про OCI8 выдаёт версию ораклового клиента такую: Revision     $Revision: 1.269.2.18 $.
А когда я ставлю из портов (перед этим обновляя их через CVSup), то у меня версия меньше: Revision     $Revision: 1.269.2.16.2.37 $. Если я качаю пакадж с ftp://www.freebsd.org, то версия у меня не меняется.
Если кто знает, надоумьте, где стырить более позднюю версию этого пакета (как у Анархиста).

Сейчас проблема такая: скрипт на функции $conn = OCILogon("<user>", "<pass>", "elt"); виснет наглухо. Через 60 секунд Апач просто просто предлагает забрать файл с этим ПХП скриптом.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 22:17 
Так. Ситуация изменилась. Паника была не по тому поводу. С ПХП всё ОК.
Скрипт
<?php
    $conn = OCILogon("<user>", "<pass>", "elt");
        if (!$conn) {
          exit;
        }
        echo OCIServerVersion($conn) ."\n";
        $query = 'SELECT sysdate FROM dual';
        $stid = OCIParse($conn, $query);
        OCIExecute($stid, OCI_DEFAULT);
        while ($succ = OCIFetchInto($stid, $row, OCI_RETURN_NULLS)) {
          foreach ($row as $item) {
            print ($item?htmlentities($item):' ');
          }
        }
        OCILogoff($conn);
?>
при непосредственном выполнении
/usr/php524/bin/php -f /usr/local/apache2/htdocs/ora_test.php
выдаёт результат:
Oracle Database 10g Release 10.2.0.1.0 - 64bit Production
25-OCT-07#

Т.е. клиент Оракла работает, ПХП на выходе даёт текстовую строку, которую должен передать клиенту Апач. Но Апач почему-то при выполнении скрипта упорно виснет......

Кто знает, почему после выполнения скрипта типа
<?php
     phpinfo();
?>
всё классно, а при выполнении скрипта с функциями OCI всё плохо?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Связка Apache+PHP+Oracle"  
Сообщение от Koshak (ok) on 25-Окт-07, 22:33 
Помаленьку продвигаемся....
Помогла строка в httpd.conf

AddHandler php-script .html

Теперь встал вопрос с кодировкой, получаемой из БД :) Зяблики какие-то приходят. Когда решу напишу как.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру