Установка на Unix системы
Содержание
- Apache 2.0 на Unix системах
- Caudium
- fhttpd related notes
- Sun, iPlanet and Netscape servers on Sun Solaris
- Установка с интерфейсами CGI и командной строки
- HP-UX specific installation notes
- OpenBSD installation notes
- Solaris specific installation tips
- Debian GNU/Linux installation notes
Этот раздел описывает установку и настройку PHP на Unix-системах. Пожалуйста прочитайте все разделы касающиеся вашей платформы или веб-сервера, прежде чем вы приступите к установке.
Как сказано в разделе Общие указания по установке, в этом разделе в основном мы описываем установку PHP ориентированную на веб, однако мы так же затрагиваем установку PHP для использования в командной строке.
Есть несколько способов установки PHP на Unix платформы. Один из них - процесс конфигурирования и компиляции исходников, другой - установка из пакетов. Этот документ сфокусирован на установке из исходных кодов. При установке из пакетов, PHP устанавливается в стандартной конфигурации. Если вам нужны особые параметры, то лучше скомпилировать PHP вручную с необходимой конфигурацией.
Для компиляции PHP из исходных кодов вам потребуется следующее:
- Базовые знания Unix (способность обращаться с "make" и компилятором C)
- Компилятор ANSI C
- flex: Version 2.5.4
- bison: Version 1.28 (предпочтительно), 1.35, или 1.75
- Веб-сервер
- А так же библиотеки, требуемые для некоторых модулей PHP (gd, pdf libs и т.д.)
Общая (или начальная) конфигурация PHP задается параметрами скрипта configure. Вы можете просмотреть список допустимых параметров при помощи команды ./configure --help. Так же список основных параметров можно просмотреть в приложении Основные параметры конфигурации, а параметры специфичные для различных расширений описаны на страницах документации, посвященных этим расширениям.
Когда PHP сконфигурирован, все готово к сборке модулей и/или исполняемых файлов. Об этом должна позаботится команда make. Если это что-то не получилось, и вы не можете понять почему, смотрите раздел Проблемы установки.
Apache 1.3.x на системах Unix
Этот раздел включает иструкции по установке Apache и PHP на платформах Unix. Установка PHP с Apache2 описана в другом разделе.
Вы можете менять аргументы configure на шаге 10 ниже. Полный список аргументов доступен на странице список основных параметров конфигурации. А параметры специфичные для различных расширений описаны в разделах посвященных соответсвующим расширениям. В инструкции ниже опущены номера версий - вы должны заменить 'xxx' на номер версии присутствующий в именах скачанных вами файлов.
Пример #1 Инструкция по установке PHP, как подгружаемого модуля Apache
1. gunzip apache_xxx.tar.gz 2. tar -xvf apache_xxx.tar 3. gunzip php-xxx.tar.gz 4. tar -xvf php-xxx.tar 5. cd apache_xxx 6. ./configure --prefix=/www --enable-module=so 7. make 8. make install 9. cd ../php-xxx 10. Теперь мы сконфигурируем PHP. Здесь вы можете настроить установку PHP при помощи параметров скрипта configure. Вы можете включить или выключить некоторые расширения. Просмотрите вывод команды ./configure --help для получения полного списка параметров конфигурации. В нашем примере мы сконфигурируем PHP очень просто - с поддержкой Apache и MySQL. В вашей системе путь до apxs может отличаться от указанного в примере. ./configure --with-mysql --with-apxs=/www/bin/apxs 11. make 12. make install Если вы решите изменить параметры конфигурации после установки, три последних шага надо будет повторить. Так же вам надо будет рестартовать Apache, чтобы новые модули подгрузились и начали работать. Перекомпиляция Apache для этого не потребуется. Заметьте, что 'make install' установит так же PEAR, различные инструменты PHP - такие как phpize, версию PHP для командной строки (PHP CLI) и т.д. 13. Настройка вашего php.ini cp php.ini-dist /usr/local/lib/php.ini Вероятно, вы захотите изменить некоторые настройки в php.ini. Если вы предпочитаете держать файл php.ini в другом месте, используйте параметр --with-config-file-path=/some/path в шаге 10. Если вы используете php.ini-recomended, прочитайте его, чтобы знать какие изменения в поведении PHP это повлечет. 14. Отредактируйте ваш httpd.conf, чтобы Apache подгружал модуль PHP. Путь в инструкции LoadModule должен указывать на модуль PHP. Команда make install может добавить эту иструкцию автоматически, но этого может и не произойти, поэтому проверьте, чтобы убедиться. Для PHP 4: LoadModule php4_module modules/libphp4.so Для PHP 5: LoadModule php5_module modules/libphp5.so 15. Так же в секции AddModule файла httpd.conf, несколько ниже ClearModuleList, добавьте следующее: Для PHP 4: AddModule mod_php4.c Для PHP 5: AddModule mod_php5.c 16. Теперь следует сконфигурировать Apache, чтобы он передавал файлы с некоторыми расширениями на обработку модулю PHP. В нашем примере сделаем это для файлов с расширениями .php и .phtml. Вы можете добавить также другие расширения в конец строки, разделяя их символом пробела. AddType application/x-httpd-php .php .phtml Сделаем то же самое для расширения .phps - модуль PHP покажет его как исходный код с подсветкой синтаксиса, вместо того чтобы исполнять. AddType application/x-httpd-php-source .phps 17. Используйте стандартную процедуру запуска сервера. (Нужно остановить и заново запустить сервер, процедура перезапуска с использованием сигналов HUP или USR1 в данном случае не подходит.)
В качестве альтернативы, можно установить PHP, как статический модуль Apache:
Пример #2 Инструкция по статической сборке PHP и Apache
1. gunzip -c apache_1.3.x.tar.gz | tar xf - 2. cd apache_1.3.x 3. ./configure 4. cd .. 5. gunzip -c php-5.x.y.tar.gz | tar xf - 6. cd php-5.x.y 7. ./configure --with-mysql --with-apache=../apache_1.3.x 8. make 9. make install 10. cd ../apache_1.3.x 11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a (Строка выше корректна. Да, мы знаем, что libphp5.a не существует на данном этапе. Этот файл будет создан.) 12. make (Теперь вы должны получить бинарный файл httpd, который вы можете скопировать в каталог bin сервера Apache. Затем вам надо выполнить "make install", если это ваша первая установка) 13. cd ../php-5.x.y 14. cp php.ini-dist /usr/local/lib/php.ini 15. Для изменения конфигурации PHP можно отредактировать файл /usr/local/lib/php.ini. Отредактируйте httpd.conf или srm.conf, добавив туда: AddType application/x-httpd-php .php
Замечание: Замените php-5 на php-4 и php5 на php4, если вы устанавливаете 4-ю версию PHP.
В зависимости от варианта вашей установки Apache и версии Unix, возможно множество путей остановки и запуска сервера. Ниже приведены несколько распространенных команд перезапуска сервера для различных установок Apache и Unix-систем. Замените /path/to/ на реальный путь до приложений в вашей системе.
Пример #3 Примеры команд перезапуска Apache
1. Некоторые дистрибутивы Linux и системы SysV: /etc/rc.d/init.d/httpd restart 2. Использование скрипта apachectl: /path/to/apachectl stop /path/to/apachectl start 3. httpdctl и httpsdctl (Использующий OpenSSL), аналогично apachectl: /path/to/httpsdctl stop /path/to/httpsdctl start 4. Использующий mod_ssl или другие варианты SSL сервер: /path/to/apachectl stop /path/to/apachectl startssl
Пути к apachectl и http(s)dctl часто различаются. Если в вашей системе есть команды locate или whereis, или which, они помогут вам найти программы, контролирующие сервер.
Другие варианты компиляции PHP для Apache:
./configure --with-apxs --with-pgsql
Будет создан файл подгружаемой библиотеки libphp5.so (или libphp4.so для PHP 4). Эта библиотека должна быть подгружена в Apache с использованием директивы LoadModule конфигурационного файла httpd.conf. В данном случае поддержка PostgreSQL будет встроена в эту библиотеку.
./configure --with-apxs --with-pgsql=shared
Будет создан файл подгружаемой библиотеки libphp5.so для Apache, но так же будет создана подгружаемая библиотека pgsql.so, которая должна быть подгружена в PHP одним из двух способов: директивой extension в php.ini или в скрипте, использованием функции dl().
./configure --with-apache=/path/to/apache_source --with-pgsql
Будет создана библиотека libmodphp5.a. Файл mod_php5.c и несколько сопровождающих файлов будут скопированы в каталог src/modules/php5 дерева исходных кодов Apache. Затем следует cкомпилировать Apache, используя --activate-module=src/modules/php5/libphp5.a, система сборки Apache создаст libphp5.a и статически свяжет с исполняемым httpd. (замените php5 на php4 для PHP 4). Поддержка PostgreSQL будет включена непосредственно в httpd и конечным результатом будет единственный исполняемый файл httpd, включающий все от Apache и все от PHP.
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
Так же как и прежде, взамен поддержки PostgreSQL, встроенной непосредственно в финальный исполняемый файл httpd вы получите подгружаемую библиотеку pgsql.so, которую вы должны будете подгрузить в PHP одним из двух способов: php.ini или используя функцию dl().
Выбирая способ установки PHP, следует учитывать преимущества и недостатки каждого из методов. Если вы собираете PHP, как подгружаемый модуль Apache - вы сможете компилировать PHP и Apache отдельно друг от друга и вам не нужно будет перекомпилировать Apache, если вы захотите изменить конфигурацю PHP. Если вы собираете PHP статически - PHP будет работать чуть быстрее. Для получения более подробной информаци посетите страницу посвященную поддержке » DSO (Dynamic Shared Object) в Apache.
Замечание: В настоящее время файл конфигурации Apache httpd.conf обычно поставляется со следующими настройками:
Пока вы не измените группу на "Group nogroup" или что-нибудь вроде "Group daemon" (такая настройка довольно распространена), PHP не сможет открывать файлы.User nobody Group "#-1"
Замечание: Убедитесь, что вы указываете установленную версию apxs, когда используете --with-apxs=/path/to/apxs. Вы НЕ ДОЛЖНЫ указывать версию apxs, поставляемую с исходными кодами Apache - только действительно установленную в вашу систему вместе с сервером.
Коментарии
I recently ran in to a situation where I was building PHP 7.1.13 from source. Configuration & make went fine, however, when I ran make install it hung. It turns out that if you are building PHP with Apache (apxs) the make file calls apxs with the -a flag which tells it to modify the httpd.conf file. If, for whatever reason, the file is not writeable then it fails and you get the hang.
Line 108 in my Makefile looks like this:
INSTALL_IT = $(mkinstalldirs) '$(INSTALL_ROOT)/usr/lib64/httpd/modules' && $(mkinstalldirs) '$(INSTALL_ROOT)/etc/httpd/conf' && /usr/sbin/apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/lib64/httpd/modules' -S SYSCONFDIR='$(INSTALL_ROOT)/etc/httpd/conf' -i -a -n php7 libphp7.la
I had to remove the -a flag and then it was fine.