Веб-серверы Sun, iPlanet и Netscape на ОС Sun Solaris
Этот раздел содержит заметки и полезные советы по установке PHP для
веб-серверов Sun Java System Web Server, Sun ONE Web Server, iPlanet и Netscape
на ОС Sun Solaris.
Начиная с PHP 4.3.3 вы можете использовать PHP-скрипты с
модулем NSAPI для
генерации пользовательских
списков директорий и страниц ошибок. Также доступны дополнительные функции
для обеспечения совместимости с Apache. Для получения поддержки современных
веб-серверов читайте заметки о подзапросах.
Более подробную информацию об использовании PHP в Netscape
Enterprise Server (NES) читайте по ссылке:
» http://benoit.noss.free.fr/php/install-php4.html
Для сборки PHP с веб-серверами Sun JSWS/Sun ONE WS/iPlanet/Netscape,
введите корректную директорию установки в опции
--with-nsapi=[DIR].
Обычно используется директория по умолчанию
/opt/netscape/suitespot/.
Также, пожалуйста, прочитайте /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
-
Установите следующие пакеты из »
http://www.sunfreeware.com/ или другого места:
- autoconf-2.13
- automake-1.4
- bison-1_25-sol26-sparc-local
- flex-2_5_4a-sol26-sparc-local
- gcc-2_95_2-sol26-sparc-local
- gzip-1.2.4-sol26-sparc-local
- m4-1_4-sol26-sparc-local
- make-3_76_1-sol26-sparc-local
-
mysql-3.23.24-beta (если нужна поддержка mysql)
- perl-5_005_03-sol26-sparc-local
- tar-1.13 (GNU tar)
-
Убедитесь, что переменная окружения PATH содержит необходимые директории
PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin
и
они доступны в окружении - export PATH
.
-
gunzip php-x.x.x.tar.gz
(если у вас дистрибутив
.gz, иначе переходите к пункту 4).
-
tar xvf php-x.x.x.tar
-
Перейдите в директорию с распакованным дистрибутивом:
cd ../php-x.x.x
-
Перед выполнением следующего шага, убедитесь, что ваш netscape сервер
установлен по пути /opt/netscape/suitespot/.
Если это не так, то в следующей команде поменяйте его на нужный и запустите:
./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc
-
Затем запустите make и, когда команда отработает,
запустите make install.
После базовой установки и чтения соответствующих файлов readme,
вам может потребоваться произвести некоторые дополнительные настройки.
Инструкции по конфигурации Sun/iPlanet/Netscape
Для начала вам потребуется добавить несколько новых путей в переменную окружения
LD_LIBRARY_PATH, чтобы веб-сервер мог найти все необходимые
разделяемые библиотеки. Лучше всего внести эти изменения в скрипте запуска
веб-сервера. Обычно этот скрипт распологается по пути
/path/to/server/https-servername/start.
Также вам вероятно понадобится отредактировать конфигурационные файлы,
расположенные тут:
/path/to/server/https-servername/config/.
-
Добавьте следующие строки в mime.types:
type=magnus-internal/x-httpd-php exts=php
-
Отредактируйте magnus.conf (для серверов >= 6) или
obj.conf (для серверов < 6) и добавьте следующие строки.
Путь shlib может отличаться для разных систем, но в общем случае будет что-то типа
/opt/netscape/suitespot/bin/libphp4.so. Добавьте следующие
строки после mime types init
.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
(PHP >= 4.3.3) Параметр php_ini
не обязателен, но с ним
вы сможете разместить ваш php.ini в директории конфигурации вашего веб-сервера.
-
Сконфигурируйте объекты по умолчанию в obj.conf
(для классов виртуального сервера [версия 6.0+] в его
vserver.obj.conf):
<Object name="default">
.
.
.
.#Обратите внимание, что следующая строка должны быть после всех строк 'ObjectType'
.#и до всех строк 'AddLog'
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
.
.
</Object>
(PHP >= 4.3.3) В качестве дополнительных параметров вы можете добавить
специальные значения php.ini, к примеру, вы можете установить
docroot="/path/to/docroot"
специфичный для контекста,
запущенного php4_execute
. Для логических ключей используйте
значения 0 и 1, а не "On","Off",...
(иначе они не будут работать корректно), т.е.
zlib.output_compression=1
, а не
zlib.output_compression="On"
-
Это необходимо только если вы хотите установить директорию, которая содержит
только скрипты PHP (что-то типа директории cgi-bin):
<Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute [inikey=value inikey=value ...]
</Object>
В последствии вы сможете сконфигурировать директорию в консоли Administration
и назначить ей стиль x-httpd-php
. Все файлы в ней будут запускаться
с помощью PHP. Это можно использовать для сокрытия использования PHP,
переименовав все файлы в .html.
-
Настройка аутентификации: аутентификация PHP не может использоваться
совместно с другими типами аутентификации. ВСЯ АУТЕНТИФИКАЦИЯ ПЕРЕДАЕТСЯ
ВАШЕМУ PHP СКРИПТУ. Для настройки аутентификации PHP для всего сервера,
добавьте следующую строку для вашего объекта по умолчанию:
<Object name="default">
AuthTrans fn=php4_auth_trans
.
.
.
</Object>
-
Для использования аутентификации PHP для единичной директории, добавьте следующее:
<Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>
Замечание:
Размер стека, который сможет использовать PHP, зависит от настроек вашего веб-сервера.
Если очень большие скрипты вызывают падения, то рекомендуется увеличить
его через Admin Server (в разделе "MAGNUS EDITOR").
Окружение CGI и рекомендованные изменения в php.ini
При написании скриптов PHP для Sun JSWS/Sun ONE WS/iPlanet/Netscape важно помнить,
что это многопоточный веб-сервер. В связи с тем, что все запросы обрабатываются в одном
процессе (процесс самого веб-сервера) и у этого процесса одно окружение для всех.
Если вы хотите получить переменную CGI, например, PATH_INFO
или HTTP_HOST
, то использование старых методов типа
getenv() или подобных (регистрация глобальных переменных
в окружении, $_ENV) будет работать некорректно. Вы можете
получить только переменные окружения самого веб-сервера, но не какие-либо корректные
переменные CGI.
Замечание:
Почему же в окружении существуют переменные (некорректные) CGI?
Ответ: Это потому, что вы запускаете процесс веб-сервера из "admin server",
который запускает стартовый скрипт веб-сервера, который вы хотите запустить, как CGI
скрипт (скрипт CGI внутри "admin server"!). Это объясняет почему окружение вообще
содержит какие-либо переменные CGI. Вы можете протестировать это запустив веб-сервер
не из "administration server". Используйте командную строку под пользователем
root для запуска веб-сервера и вы не найдете никаких переменных CGI в окружении.
Просто измените ваш скрипт, чтобы он получал переменные CGI правильным образом
для PHP 4.x, используя суперглобальный массив $_SERVER.
Если вы работаете со старым скриптом, использующим
$HTTP_HOST и т.д, вам необходимо включить
register_globals
в php.ini и изменить порядок переменных
(важно: удалите из него "E"
, так как тут вам не нужны
переменные окружения):
variables_order = "GPCS"
register_globals = On
Использование для создания пользовательских списков директории и страниц ошибок (PHP >= 4.3.3)
Вы можете использовать PHP для создания страниц ошибок
"404 Not Found"
и похожих. Добавьте следующее для объекта в
obj.conf для каждой страницы с ошибкой, которую вы хотите
переопределить:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
где
XXX
- код ошибки HTTP. Пожалуйста, удалите все прочие
директивы
Error
, которые могут пересекаться с вашими.
Если вы хотите сделать общую страницу для всех ошибок, оставьте параметр
code
пустым. Ваш скрипт получит код статуса HTTP
в
$_SERVER['ERROR_TYPE'].
Другая возможность - создание пользовательских списков содержимого директории.
Просто создайте скрипт, который будет отображать список директории и
замените соответствующую строку Service
для
type="magnus-internal/directory"
в obj.conf на следующее:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
Для страниц с ошибками и для страниц со списками директорий, оригинальный URI и
подмененный URI будут содержаться в переменных
$_SERVER['PATH_INFO'] и
$_SERVER['PATH_TRANSLATED'].
Замечание о nsapi_virtual() и подзапросах (PHP >= 4.3.3)
Модуль NSAPI поддерживает функцию nsapi_virtual()
(псевдоним: virtual()) для создания подзапросов на веб-сервере
и вставки результатов на страницу. Эта функция использует недокументированные
возможности библиотеки NSAPI. На Unix модуль самостоятельно ищет необходимую
функциональность и использует ее, если она доступна. Если же она недоступна,
nsapi_virtual() будет запрещено.
Замечание:
Но будьте осторожны: поддержка nsapi_virtual() - ЭКСПЕРИМЕНТАЛЬНАЯ!!!