Перейти к содержимому

Как включить php в apache

  • автор:

Как включить php в apache

Этот раздел описывает установку PHP c Apache 2.x на Unix системах.

Внимание

Мы не рекомендуем использовать потоковый MPM в промышленной среде вместе с Apache 2. Вместо этого, используйте prefork MPM, используемый по умолчанию в Apache 2.0 и 2.2. Подробную информацию по этому вопросу вы можете найти в соответствующем разделе FAQ Apache2 и потоковый MPM

Самым авторитетным источником информации по Apache 2.x является » документация Apache. Более подробная информация о настройках при установке может быть найдена там.

Самая последняя версия Apache Http Server может быть получена на » странице загрузки Apache, а адрес соответствующей версии PHP был указан выше. Это краткое руководство описывает лишь базовую установку Apache 2.x и PHP. Для получения более детальной информации прочитайте » документацию Apache. В инструкции ниже опущены номера версий — замените ‘NN’ на номер, соответствующий скачанной вами версии Apache.

На данный момент есть две версии Apache 2.x — 2.4 и 2.2. Хотя для выбора каждой из них существуют отдельные доводы, 2.4 является наиболее свежей и рекомендуемой версией, если вас устраивает такой выбор. Тем не менее, данные инструкции будут работать как для 2.4, так и для 2.2. Обратите внимание, что Apache httpd 2.2 официально больше не поддерживается, поэтому дальнейшая разработка не будет продолжаться, также как и приниматься новые патчи.

    Скачайте Apache HTTP server как было указано выше и распакуйте его:

tar -xzf httpd-2.x.NN.tar.gz
tar -xzf php-NN.tar.gz
cd httpd-2_x_NN ./configure --enable-so make make install
/usr/local/apache2/bin/apachectl start

Затем остановите сервер, чтобы сконфигурировать и установить PHP:

/usr/local/apache2/bin/apachectl stop
cd ../php-NN ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql make make install
cp php.ini-development /usr/local/lib/php.ini
LoadModule php_module modules/libphp.so
LoadModule php7_module modules/libphp7.so
 SetHandler application/x-httpd-php 

Или, если мы хотим добавить расширения .php, .php2, .php3, .php4, .php5, .php6 и .phtml, это можно записать так:

 SetHandler application/x-httpd-php 

Чтобы PHP отображал содержимое файлов .phps с подсветкой синтаксиса, нужно внести соответствующую директиву

 SetHandler application/x-httpd-php-source 

Можно использовать mod_rewrite для отображения любого .php файла с подсветкой синтаксиса, без нужды его переименования в .phps:

RewriteEngine On RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
/usr/local/apache2/bin/apachectl start
service httpd restart

Если вы следовали инструкциям выше, то на данном этапе должны иметь запущенный веб-сервер Apache2 с поддержкой PHP, как модуля SAPI . Конечно, для PHP и Apache доступно гораздо больше параметров конфигурации. Используйте ./configure —help в соответствующей папке с исходными кодами для получения полного списка параметров конфигурации.

Если вы хотите собрать многопоточную версию Apache, то при сборке вам следует указать модуль MPM worker вместо стандартного модуля MPM prefork . Чтобы сделать это, нужно добавить следующий аргумент к ./configure на шаге 3:

--with-mpm=worker

Не следует бездумно использовать эту настройку, используйте её только если вы понимаете все последствия этого решения. Документация Apache по » модулям MPM значительно глубже раскрывает эту тему.

Замечание:

Если вы хотите использовать зависимый контент (content negotiation), прочитайте Apache MultiViews FAQ.

Замечание:

Для сборки многопоточной версии Apache, ваша система должна поддерживать потоки. Это так же подразумевает сборку PHP c поддержкой Zend Thread Safety (ZTS). И, как следствие, не все модули PHP смогут работать. Рекомендуется установка Apache с модулем MPM по умолчанию — prefork .

User Contributed Notes 17 notes

1 year ago

I had just installed php8.1.12 on a machine used for writing C code.

Below are some libraries that I needed to download on a debian-based OS.

apt-get install libpcre3 libpcre3-dev
apt-get install apache2-dev
apt-get install libxml2-dev
apt-get install libsqlite3-dev

These were the missing packages that I required.
If you get an error regarding a missing package or library, for example when I needed sqlite3, run the command:

apt search sqlite3

And you’ll be able to see if there’s any dev or lib packages.

The apache2 instructions worked flawlessly at the time of php8.1.12; and in order to get certain requirements for an application, I had to run the php configure file like so:

./configure —with-apxs2=/usr/local/apache2/bin/apxs —with-pdo-mysql —with-mysqli —with-zip —enable-gd

The extra flags allowed me to use both types of mysql, allowed me to utilize PHP zip archiving, and allowed me to use Gnatt stuff.

14 years ago

When I upgrade to apache 2.2, this:

AddType application/x-httpd-php .php5
AddType application/x-httpd-php .php42
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtm
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .asp

. does not worked for me, so I did this:

Another interesting point with Apache 2.2 is following.
Let suppose we installed PHP as module. But for some directory, we need to use PHP as CGI (probably because of custom configuration). This can be done using:

AddType application/x-httpd-php-custom .php
Action application/x-httpd-php-custom /cgi-bin/php-huge

Note type must be different than «application/x-httpd-php» and also you need to deactivate the handler on sertain extention. You can do mixed configuration:

AddType application/x-httpd-php-custom .php
Action application/x-httpd-php-custom /cgi-bin/php-huge

in such case files like *.php5 and so on will be parsed via module, but *.php will go to php-huge executable.

4 years ago
解析PHP,需要Apache 2.4.9 以后

SetHandler «proxy:fcgi://127.0.0.1:9000»

18 years ago

during the make process should u receive an error declaring ext/ctype/ctype.lo (or another file) is truncated then you need to ‘make clean’ prior to a healthy ‘make’ and ‘make install.’

looking into your ext/ directory you may find the offensive file to be 1 byte long.

17 years ago

I’ve (painfully) discovered that installing PHP5 with «make install» under SuSe 9.2 is NOT a good idea.
http://www.aditus.nu/jpgraph/apache2suse.php
This page explains how to install it without breaking everything that’s php-related in the Apache2 configuration. Its first purpose, though, is to show how to have php 4 and 5 to cohabit properly.

6 years ago

Building php 7.1.3 with mysql 5.7.17 and httpd 2.4.25 on Debian 8, step 5 failed for me. Instead of

12 years ago

On 64-bit Fedora systems (I’m using Fedora 14), configuring PHP to use the MySQL libraries installed as part of the distribution gives the following error if you follow the default instructions in this manual.

Cannot find libmysqlclient under /usr

Modifying he following invocation of configure as follows:

./configure —with-apxs2=/path/to/apxs —with-libdir=lib64 —with-mysql

Note the addition of —with-libdir=lib64
This points the configure script to look for 64-bit mysqlclient libraries.

14 years ago

I have successfully installed Apache 2.2.11 and PHP 5.2.8 under Red Hat 9.0 on a Pentium 166 with 32 MB of RAM.

While I used RH9, the worst possible case, these notes are probably good for RH-based distributions too (Red Hat Enterprise, Fedora, CentOS. )

If you want to install MySQL, it needs to be installed before PHP because PHP requires some libraries be available.

One think important when picking up a binary distribution of MySQL is to download all four packages: MySQL-server, MySQL-devel, MySQL-client and MySQL-shared. Note: The MySQL was bundled with PHP 4 but is not anymore in PHP 5.

Then you need to install Apache before PHP, because again PHP needs some libraries be available. I installed Apache 2 from source, using the very last version available, which is 2.2.11.

I installed PHP 5.2.8 from source. Here, I had a number of problems, but none which I could not resolve easily, some of them with a little help from different forums I found through Google.

Rembember: When it says you need a package named xyz and you notice there is also one named xyz-devel, grab it.

Most of the packages I got from:
http://legacy.redhat.com/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/
A similar page exists for other versions of Red Hat
and:
http://rpmfind.net/
This site has an updated version of some of the packages. Make sure to use only the one labeled for you version (in my case, Red Hat 9.0) or it will not likely work.

You already have glibc and glibc-common installed, but you need to get glibc-devel and glibc-kernheaders. Make sure to match glibc’s version (rpm -q glibc). Note: When it says kernel-header is a required dependency, that’s glibc-kernheader (not kernel-source). You will also need binutils (no need to match the version), and gcc and cpp (version must match).

You need zlib-devel (zlib is probably already installed, match the version you have).

If you install the GD extension, the actual library is already bundled with PHP 5 (use that one, they have done some changes in there, so don’t upgrade), but you will need to install libpng and libpng-devel (match version, or disable in configure if you don’t want) and libjpeg (no -devel with that one).

You will also need libxml2. Now there were a problem, because PHP requires libxml2 be 2.6 or greater, but Red Hat only supplied 2.5.4-1 for RH9 (if you have a more recent distro, you might be more lucky). After looking for a while, I decided to grab the source code for the most recent distribution at the official website (http://xmlsoft.org/) and compiled.

Hope my post is useful to someone. Please, share your experience when compiling/installing for your particular platform and setup. Remember how hard it’s been for you the very first time. I confess, my very first server installation took me nearly a week and I was glad others helped me.

19 years ago

Hi too had same problem with multiview like when i execute http://huey/admin/test.php it used to compile but when i use http://huey/admin/test it wouldnt recognise it as php file. i worked it out with the addhandler method and AddType in different line and setting multiview for directive

«multiviews Options Indexes FollowSymLinks MultiViews»

the directives u can set it to root directory so now when u type pn test it will search in precendence for test.php, test.html if any .

its working for me with apache2.0.47 and php 4.3.9 on solaris

Как включить php в apache

Для работы с PHP нам потребуется веб-сервер. Обычно в связке с PHP применяется веб-сервер Apache. Официальный сайт проекта — https://httpd.apache.org/. Там же можно найти всю подробную информацию о релизах, скачать исходный код. Однако официальный сайт не предоставляет готовых сборок для ОС Windows.

Перед установкой Apache следует отметить, что если наша ОС Windows, то в системе должны быть установлен пакет для C++, который можно найти по адресу для 64-битной и для 32-битной.

Итак, если нашей ОС является Windows, перейдем на сайт http://www.apachelounge.com/, который предоставляет дистрибутивы Apache для Windows:

Загрузка веб-сервера Apache

В разделе Apache 2.4 binaries VS17 выберем последнюю версию дистрибутива сервера. На странице загрузок мы можем найти две версии пакета Apache — для 64-битных систем и для 32-битных.

После загрузки пакета Apache распакуем загруженный архив. В нем найдем папку непосредственно с файлами веб-сервера — каталог Apache24 . Переместим данный каталог на диск C, чтобы полный путь к каталогу составлял C:/Apache24 .

Запуск Apache

В распакованном архиве в папке bin найдем файл httpd.exe

Запуск веб-сервера Apache

Это исполняемый файл сервера. Запустим его. Нам должна открыться следующая консоль:

веб-сервер Apache httpd.exe

Пока работает это приложение, мы можем обращаться к серверу. Для его тестирования введем в веб-браузере адрес http://localhost . После этого веб-браузер должен отобразить следующую страницу:

it works в веб-сервере Apache

Эта страница символизирует, что наш веб-сервер работает, и мы можем с ним работать.

Конфигурация веб-сервера

Теперь проведем конфигурацию сервера, чтобы связать его с ранее установленным интерпретатором PHP.. Для этого найдем в папке веб-сервера в каталоге conf (то есть C:\Apache24\conf ) файл httpd.conf

конфигурация веб-сервера Apache и связь с PHP

Откроем этот файл в текстовом редакторе. httpd.conf настраивает поведение веб-сервера. Мы не будем подобно затрагивать его описания, а только лишь произведем небольшие изменения, которые потребуются нам для работы с PHP.

Прежде всего подключим PHP. Для этого нам надо подключить модуль php, предназначенный для работы с apache. В частности, в папке php мы можем найти файл php8apache2_4.dll :

php8apache2_4.dll и веб-сервер Apache и связь с PHP

Для подключения php найдем в файле httpd.conf конец блока загрузки модулей LoadModule

//. #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule watchdog_module modules/mod_watchdog.so #LoadModule xml2enc_module modules/mod_xml2enc.so

И в конце этого блока добавим строчки

LoadModule php_module "C:/php/php8apache2_4.dll" PHPIniDir "C:/php"

Далее укажем место, где у нас будут храниться сайты. Для этого создадим, например, на диске С каталог localhost . Затем найдем в файле httpd.conf строку

DocumentRoot "$/htdocs" 

По умолчанию в качестве хранилища документов используется каталог «c:/Apache24/htdocs». Заменим эту строку на следующую:

DocumentRoot "c:/localhost" 

Изменим пути файлам, в которые будут заноситься сведения об ошибках или посещении сайта. Для этого найдем строку

ErrorLog "logs/error.log"

И заменим ее на

ErrorLog "c:/localhost/error.log"

Далее найдем строку

CustomLog "logs/access.log" common

И заменим ее на

CustomLog "c:/localhost/access.log" common

Таким образом, файл error.log , в который записываются ошибки, и файл access.log , в который заносятся все данные о посещении веб-сайта, будут располагаться в папке c:/localhost.

Затем найдем строчку:

#ServerName www.example.com:80

И заменим ее на

ServerName localhost
 # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig conf/mime.types

И под строкой добавим две строчки:

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

То есть должно получиться:

 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # # TypesConfig points to the file containing the list of mappings from # filename extension to MIME-type. # TypesConfig conf/mime.types

В данном случае мы добавили поддержку для файлов с расширением .php и .phps .

 DirectoryIndex index.html 

И заменим его на следующий:

 DirectoryIndex index.html index.php 

В данном случае мы определяем файлы, которые будут выполняться при обращении к корню файла или каталога. То есть по сути определяем главные страницы веб-сайта: index.html и index.php.

Это минимально необходимая конфигурация, которая нужна для работы с PHP.

Теперь наша задача — убедиться, что php подключен и работает правильно. Для этого перейдем в папку c:/localhost , которую мы создали для хранения файлов веб-сервера, и добавим в нее обычный текстовый файл. Переименуем его в index.php и внесем в него следующее содержание:

В данном случае мы создали простейший скрипт, который выводит общую информацию о PHP.

Теперь заново запустим файл httpd.exe и обратимся к этому скрипту, набрав в строке браузера адрес http://localhost/index.php

phpinfo

Что тут произошло? При обращении к сайту на локальной машине в качестве адреса указывается http://localhost . Затем указывается имя ресурса, к которому идет обращение. В данном случае в качестве ресурса используется файл index.php . И так как в файле httpd.conf в качестве хранилища документов веб-сервера указан каталог C:\localhost , то именно в этом каталоге и будет веб-сервер будет производить поиск нужных файлов.

И поскольку выше при конфигурировании мы указали, что в качестве главной страницы может использоваться файл index.php , то мы можем также обратиться к этому ресурсу просто http://localhost/

Таким образом, теперь мы можем создавать свои сайты на php.

Установка веб-сервера в качестве службы

Если мы часто работаем с веб-сервером, в том числе для программиррования на PHP, то постоянно запускать таким образом сервер, может быть утомительно. И в качестве альтернативы мы можем установить Apache в качестве службы Windows. Для этого запустим командную строку Windows от имени администратора и установим Apache в качестве службы с помощью команды:

C:\Apache24\bin\httpd.exe -k install

Установка Apache и PHP

То есть в данном случае прописываем полный путь к файлу httpd.exe (C:\Apache24\bin\httpd.exe) и далее указываем команду на установку службы -k install .

Если установка завершится удачно, то в командная строка отобразит сообщение «The Apache2.4 service is successfully installed». Также будет проведено тестирование сервера.

После установки службы убедимся, что она запущена

Подключение PHP к Apache

project author

Если Вам понравился данный материал, поделитесь им с вашими друзьями в соц сетях

Основной особенностью веб-сервера Apache является расширяемость его функциональных возможностей, по средствам подключения различных дополнительных модулей. Каждый из них выполняет определенные задачи. Часть модулей разрабатывается командой Apache Software Foundation, другая часть, отдельными open source разработчиками.

Используя данный функционал, к веб-серверу Apache, возможно подключить, к примеру, поддержку различных языков программирования, таких как: PHP, PERL, Python, Ruby, ASP и др.

В одном из предыдущих материалов Установка Apache 2.4, был описан процесс установки и запуска локального веб-сервера Apache на ОС Microsoft Windows 7. Теперь подключим к нему язык программирования PHP. Какую версию PHP выбрать и где ее скачать описано в материале Что необходимо для установки веб-сервера?

Подключение PHP к Apache

Итак, имея в наличии, ранее скаченный архив с необходимой версией PHP, создадим в корне локального диска «C:\» директорию «php», и распакуем в нее содержимое архива.

Перейдем в директорию «C:\php\» и найдем 2 файла: «php.ini-development» и «php.ini-production». Эти файлы — примеры конфигурационных файлов PHP. Сделайте копию файла «php.ini-development» с именем «php.ini», в дальнейшем это будет основным конфигурационным файлом настройки PHP. Текущих настроек файла ««php.ini»» будет достаточно, для того, что бы подключить модуль PHP к веб-серверу Apache и проверить его корректную работу.

Теперь необходимо сообщить нашему веб-сервер Apache, что необходимо подключить модуль PHP.

Открываем конфигурационный файл веб-сервера «C:\Apache24\conf\httpd.conf» и раскомментируем следующие строки (данные строки отвечают за подключение необходимый модулей):

LoadModule negotiation_module modules/mod_negotiation.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so

Сразу после блока с подключением модулей, добавляем в конф. файл следующие строки:

PhpIniDir "C:/php" LoadModule php5_module "C:/php/php5apache2_4.dll" AddHandler application/x-httpd-php .php

В первой строке указываем путь до директории с конфигурационным файлом PHP — «C:\php\php.ini».

Во второй строке говорим веб-серверу, что необходимо загружать модуль PHP, который отвечает за обработку php файлов, указывая при этом полный путь до библиотеки dll. Необходимо помнить, что имя библиотеки может отличаться от указанного.

В третей строке указываем расширение файлов, которые будут обрабатываться интерпретатором PHP.

Ниже в конфигурационном файле ищем блок:

 DirectoryIndex index.html 

и добавляем в конце второй строки «index.php»

 DirectoryIndex index.html index.php 

Перезагружает веб-сервер любым удобным для Вас способом (используя ApacheMonitor, сервис Службы или командную строку). Если при перезагризки веб-сервера возникли ошибки и он не запустился, проверьте все измененые Вами данные, возможно была допущена опечатка в указании путей.

Проверяем работает ли PHP

После успешного запуска веб-сервера, необходимо проверить, что PHP работает. Для этого создаем в корневой директории управления сайтами «C:\Apache24\htdocs\» файл c именем «phpinfo.php», открываем его в текстовом редакторе и добавляем следующие строки:

phpinfo — это системная PHP-функция, выводящая различную информацию об интерпретаторе: настройки, текущие значения системных переменных и т.д.

Открываем в браузере страницу http://localhost/phpinfo.php. Если все настроено правильно, то странице Вы увидите таблицу с версией PHP и значением переменных.

Работа с конфигурационным файлом php.ini

Открываем конфигурационный файл php «C:\php\php.ini» в текстовом редакторе.

;extension_dir = "ext"

это значение указывает на директорию (каталог), в котором хранятся динамически загружаемые расширения.

раскомментируем и изменим значение директивы

extension_dir = "C:\php\ext"

Предлагаю разобраться, что нам дало выполнение данного действия и что такое динамически загружаемые расширения.

Если Вы откройте директорию «C:\php\ext», то увидите множество файлов с расширением .dll. Каждый из этих файлов и есть то самое динамически загружаемое расширение. Подключение данных расширений позволяют увеличивать функциональные возможности PHP.

Итак, путь до динамически загружаемых расширений мы указали, теперь давайте подключим наиболее важные и необходимые из них. Для это построчно раскомментируем необходимые расширения, удалив в начале каждой строки знак комментирования «;» (точка с запятой).

найдем блок Dynamic Extensions (Динамические Расширения)

;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; . extension=php_bz2.dll extension=php_curl.dll extension=php_gd2.dll extension=php_imap.dll extension=php_mbstring.dll extension=php_exif.dll ; Must be after mbstring as it depends on it extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll .

раскомментируем необходимые расширения

По итогам изучения данного материала мы расширили функциональные возможности веб-сервера Apache подключив к нему модуль языка программирования PHP.

  • Установка Apache 2.4
  • Подключение MySQL к PHP

Как включить php в apache?

Установил apache, php-fpm, libapache2-mod-php. Хотел включить через a2enmod php, но при старте получаю ошибку. Удалил Апач, установил, но php mod пропал из спика установленных. Что делать?

  • Вопрос задан более трёх лет назад
  • 4477 просмотров

9 комментариев

Оценить 9 комментариев

slo_nik

Дмитрий @slo_nik Куратор тега PHP
Добрый вечер.
Опишите подробней, как устанавливали, как настраивали, какие ошибки получаете.

kirill_782

Кирилл Жиляев @kirill_782 Автор вопроса

slo_nik: ошибок нет. Ставил php-fpm либу для апча, и сам Апач. Включил php Апач перестал запускаться. Лог ошибок пустой. Удалил Апач поставил Апач. Теперь не могу включить php

slo_nik

Дмитрий @slo_nik Куратор тега PHP
Кирилл Жиляев: Как ставили, на стол? Или как?

kirill_782

Кирилл Жиляев @kirill_782 Автор вопроса

slo_nik: apt-get install php-fpm apache2 libapache2-mod-php
a2enmod php # модуля нет
В a2enmod даже намеков нету на php

slo_nik

Дмитрий @slo_nik Куратор тега PHP
Кирилл Жиляев: Удалите всё, что пытались поставить и установите заново при помощи tasksel

kirill_782

Кирилл Жиляев @kirill_782 Автор вопроса
slo_nik: удалял эти пакеты — 0 реакции

slo_nik

Дмитрий @slo_nik Куратор тега PHP

Кирилл Жиляев: Удалите пакеты, потом ставите tasksel
sudo apt-get install tasksel
Затем
sudo tasksel
Клавишами курсора выбираете LAMP Serve, подтверждаете выбор пробелом, затем TAB и ENTER. Установится полностью apache + php + mysql

kirill_782

Кирилл Жиляев @kirill_782 Автор вопроса

slo_nik что делать?
Reading package lists. Done
Building dependency tree
Reading state information. Done
libapache2-mod-php7.0 is already the newest version (7.0.15-0ubuntu0.16.04.4).
0 upgraded, 0 newly installed, 0 to remove and 67 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Setting up libapache2-mod-php7.0 (7.0.15-0ubuntu0.16.04.4) .
dpkg: error processing package libapache2-mod-php7.0 (—configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
libapache2-mod-php7.0
E: Sub-process /usr/bin/dpkg returned an error code (1)
ladybug@72261:~$

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *