apache php как модуль apache

Если PHP установлен как модуль Apache

Распространённой ошибкой является запуск Apache с правами суперпользователя или любое другое расширение полномочий веб-сервера.

Расширение привилегий веб-сервера до полномочий суперпользователя угрожает работоспособности всей системы, поэтому такие команды, как sudo, chroot и другие способы запуска с правами суперпользователя должны выполняться исключительно теми, кто профессионально разбирается в вопросах безопасности.

User Contributed Notes 4 notes

doc_root already limits apache/php script folder locations.

open_basedir is better used to restrict script access to folders
which do NOT contain scripts. Can be a sub-folder of doc_root as in php doc example doc_root/tmp, but better yet in a separate folder tree, like

user/open_basedir_root/. Harmful scripts could modify other scripts if doc_root (or include_path) and open_basedir overlap.
If apache/php can’t browse scripts in open_basedir, even if malicious scripts uploaded more bad scripts there, they won’t be browse-able (executable).

One should also note that the many shell execute functions are effectively a way to bypass open_basedir limits, and such functions should be disabled if security demands strict folder access control. Harmful scripts can do the unix/windows version of «delete */*/*/*» if allowed to execute native os shell commands via those functions. OS Shell commands could similarly bypass redirect restrictions and upload file restrictions by just brute force copying files into the doc_root tree. It would be nice if they could be disabled as a group or class of functions, but it is still possible to disable them one by one if needed for security.

PS. currently there is a bug whereby the documented setting of open_basedir to docroot/tmp will not work if any include or require statements are done. Right now include will fail if the included php file is not in BOTH the open_basedir tree and the doc_root+include_path trees. Which is the opposite of safe.
This means by any included php file must be in open_basedir, so is vulnerable to harmful scripts and php viruses like Injektor.

There is a better solution than starting every virtual host in a seperate instance, which is wasting ressources.

You can set open_basedir dynamically for every virtual host you have, so every PHP script on a virtual host is jailed to its document root.

Example:

ServerName www.example.com
DocumentRoot /www-home/example.com
[. ]

php_admin_value open_basedir \ «/www-home/example.com/:/usr/lib/php/»

If you set safe_mode on, then the script can only use binaries in given directories (make a special dir only with the binaries your customers may use).

Now no user of a virtual host can read/write/modify the data of another user on your machine.

Источник

Режимы работы PHP

На хостинге Hostland интерпретатор PHP может работать в нескольких основных режимах. В этом обзоре мы рассмотрим следующие режимы работы:

PHP как модуль Apache (mod_php)

Данный режим является основным режимом работы php на хостинге Hostland. При этом режиме в настройках веб-сервера Apache подключается специально скомпилированный модуль mod_php. В этом случае каждый процесс веб-сервера будет включать в себя этот модуль. Выбор этого режима подходит для широкого спектра сайтов с большой и малой посещаемостью.

Преимущества:

Недостатки:

PHP как CGI приложение

В этом режиме запускается интерпретатор php-cgi для всех скриптов, для которых установлен CGI в качестве обработчика. Если большая часть сайта состоит из статического содержимого, то CGI будет хорошим выбором, т.к. будет обеспечено экономичное использование оперативной памяти за счет того, что нужный интерпретатор будет вызываться в случае необходимости. Но, и в то же время, такой метод незначительно замедляет исполнение, т.к. при каждом запросе понадобится загрузка интерпретатора в память. Запуск PHP в режиме CGI позволяет указывать свой php.ini, что в свою очередь дает бóльшую гибкость в настройках php.

На хостинге Hostland установлены следующие интерпретаторы php, доступные для использования в режиме CGI:

Переключить php в режим CGI (и обратно в режим модуля mod_php) можно двумя способами:

Автоматически в панели управления:

В панели управления хостингом, в разделе «Домены» для каждого домена доступна настройка php.ini. Режим работы php будет автоматически переведен в режим CGI при добавлении хотя бы одной опции php.ini в «Стандартном», «Ограниченном» или «Параноидальном» режиме.

PHP в режиме CGI автоматически подключается только для основного домена. Подключать PHP в режиме CGI для поддоменов необходимо вручную. Для этого скопируйте папку sys-php-cgi из корневой папки основного домена (данная дирректория появится в автоматическом режиме, после подключения PHP в режим CGI) в корневую папку поддомена. Например, для включения PHP в режиме CGI на поддомене sub.domain.ru нужно скопировать папку

/domain.ru/htdocs/www/sys-php-cgi в папку

/domain.ru/htdocs/sub, если Вы это действие не выполните, то при обращении к поддомену sub.domain.ru будет получена ошибка 500

Вручную (для экспертов):

Создать файл /domain-name.ru/htdocs/www/cgi-bin/php.cgi:

Закачать файл на сервер в ASCII-режиме в папку домена, на котором предполагается запускать PHP в режиме CGI. Например, для домена domain-name.ru это будет папка /domain-name.ru/htdocs/www/cgi-bin/. Если закачать файл не в ASCII-режиме, скрипт работать не будет, будет выдаваться ошибка 500 (Internal Server Error).

Установить на файл php.cgi права 0755 (rwxr-xr-x).

Преимущества:

Недостатки:

Небольшая ремарка:

Из практики работы нашей технической поддержки: при переносе сайтов с других хостингов мы иногда сталкиваемся с ситуацией, в которой приложение отказывается работать в режиме модуля php (с кодом завершения «segmentation fault»), но при этом стабильно работает в режиме php-cgi. С чем это связано сказать затруднительно, но это факт. Обычно это касается т.н. legacy кода, написанного на php5.2 или php4.4. Сайт при этом работает, но клиент, в силу обстоятельств, не может обновить код до современных версий php.

PHP в режиме работы php-fpm

FastCGI Process Manager, «Менеджер процессов FastCGI». Это альтернативная реализация FastCGI режима в PHP с несколь­кими допол­ни­тель­ными воз­мож­но­стя­ми, кото­рые обычно исполь­зу­ются для очень высо­ко­на­гру­жен­ных сайтов.

Следует помнить, что при работе PHP в режиме FastCGI в памяти «висит» сам php интерпретатор, а не какой-то конкретный php-скрипт.

PHP-FPM используется, в основном, в связке с Nginx, без установки Apache.

Более подробное описание данного режима выходит за рамки обзора данной темы, но на нашем VDS-хостинге мы с радостью поможем вам его настроить.

Источник

Как подключить PHP к Apache на Windows

Начнём с того, что скачаем самую новую версию PHP для Windows с официального сайта: https://windows.php.net/download/

Там несколько вариантов, которые различаются:

Выбирайте самую последнюю версию, с той битностью, какая у вашего сервера. Т.е. если у вас Apache 64-битный, то PHP также должен быть 64-битным. Всегда выбирайте Thread Safe версию.

Для каждого файла имеется две ссылки:

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

apache php как модуль apache

Настройка PHP в Windows

Настройка выполняется в два этапа:

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

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

В этот файл добавьте три строки, две из которых нужно откорректировать:

В первой строке вместо C:/путь/до/PHP напишите точный путь до папки, куда вы распаковали файлы PHP. В третьей строке C:/путь/до/PHP/php8apache2_4.dll также откорректируйте путь, указав расположение PHP папки.

К примеру, я распаковал PHP в папку C:/Server/bin/PHP, тогда мои настройки следующие:

apache php как модуль apache

Если папка PHP находится в корне диска C, тогда эти строки должны быть такими:

Чтобы изменения вступили в силу, перезапустите веб-сервер или компьютер.

Настройка PHP

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

Открываем файл php.ini любым текстовым редактором, ищем строчку

Обратите внимание, что вам нужно скорректировать строку C:\путь\до\PHP\ext\, указав конкретный путь до папки, где размещены файлы PHP.

У PHP (как и у Apache) имеется много расширений. Если вы не знаете, какое расширение для чего нужно, то как минимум два варианта:

Чтобы подключить большую часть расширений, найдите группу строк:

теперь раскомментируйте эту группу строк:

Мы подключили самые востребованные расширения, чтобы работало как можно больше функций PHP.

Источник

Настройка Apache для работы с PHP как с модулем

apache php как модуль apache

apache php как модуль apache

Теперь мы знаем, как установить Apache и php. Теперь наша задача состоит в том, чтобы подружить эти две вещи. Займемся совестной настройкой Apache и PHP. Как и в предыдущих заметках, я постараюсь как можно подробней описать последовательность действий по настройке. Основные моменты будут показаны на скриншотах.

Перейдем в папку, в которую мы устанавливали Apache. Если вы последовали моему совету, в посте об установке Apache, то она у вас должна быть:

C:/Program Files/Apache Software Foundation/Apache2.2/conf

Открываем файл httpd.txt:

apache php как модуль apache

В отличие от синтаксиса конфигурационного файла php (далее для краткости буду называть конфиг), описанного в этой заметке, в конфиге Apache для комментирования используется символ «#» (решетка). Т.е. все строки начинающиеся с этого символа «не активны». Для разделения значения переменной и ее параметра используется пробел. Например:

ServerRoot «C:/Program Files/Apache Software Foundation/Apache2.2»

ServerRoot — имя переменной

«C:/Program Files/Apache Software Foundation/Apache2.2» — значение переменной.

Настройка Apache для работы с PHP.

PHP может быть установлен как модуль Apache и как CGI-приложение. Мы рассмотрим настройку PHP как модуль Apache.

В конфигурационном файле Apache найдите секцию «Dynamic Shared Object»:

apache php как модуль apache

Раскомментируйте выделенную строку c mod_rewrite.so. И добавьте саму нижнюю строчку. В этой строчке указан, путь к файлу, который нужен Apache, чтобы взаимодействовать с PHP. Если вы установили PHP в папку, отличную от той,которую я вам советовал (C:/php5), то пропишите здесь свой путь к файлу php5apache2_2.dll.

Строчкой ниже добавьте:

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

Следующий шаг — назначение обработчика для типов файлов, в которые вы планируете добавлять PHP код. Строчкой ниже добавляет следующий текст:

Этот текст означает, что для файлов с расшерением .php назначается обработчикapplication/x-httpd-php.

В итоге у вас должно получиться следующее ( не полный скрин, сверху еще модули):

Также нам нужно настроить одну полезную опцию:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#

DirectoryIndex index.html index.htm index.shtml index.php

Здесь задаются файлы, которые будут автоматически загружаться при обращении к каталогу. Например, если вы напишите в строке браузера http://localhost/, браузер будет искать файлы index.html index.htm index.shtml index.php, порядок слева направа, если найдет какой-то файл по покажет, если не найдет — то покажет список файлов в директории.

Теперь займемся правами доступа. Это базовые настройки для всех директорий:

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the «default» to be a very restrictive set of
# features.
#

Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all

Options — здесь указываеются через пробел настройки:

AllowOverride — управляет возможностью переписывания настроек для конкретной директории и вложенных в нее директорий с помощью .htaccess файлов. Значение Allразрешает перекрывать базовые настройки сервера в любой директории.

Allow from all — разрешает доступ из брузера ко всем вложенным директориям ваших сайтов.

У некоторых людей возникают ошибки в процессе установки, связанные с тем, что сервер не может по доменному имени узнать IP адрес — «Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName«. Эту ошибку можно посмотреть в логах ошибок Apache (logs/error.txt). Решается заменой localhost на ваш IP адрес:

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
# В строчке ниже замените locahost на тот IP адресс, который написан в логах Apache
ServerName localhost:80

Чтобы изменения вступили в силу, нам необходимо перезагрузить Apache.

Источник

Apache php как модуль apache

Та не, не сломаешь, в принципе. Но и DLE не будет работать нормально.

На всякий случай просто сохрани текущий конфиг, до переключения.

Просто ISP бывает глючит, когда слишком сильно модифицируешь дефолтный конфиг. А в случае с DLE его нужно модифицировать очень сильно, либо подключать инклюдом (самый верный вариант).

А если не будешь руками лазить в конфиг, и уверен, что DLE работает с дефолтным конфигом Apache — то можно и туда-обратно тыкать, ничего не сломаешь.

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

Что касается CGI — не совсем так, CGI точно так же через апач работает.

«Чтобы иметь преимущества php 7 его нужно обновить общесистемный. Тогда и высокопроизводительный сервис PHP-fpm станет работать на этой же версии. Но чего делать пока не рекомендуется, да и нету его еще в стабильных репозиториях большинства OS.»

Спасибо за эту статью и видео! Видео кстати также будет полезно тем, кто интересуется темой «как надо работать в терминале» )

P.S. Php7 сам по себе должен быть быстрее 5-го, т.к. в нем обновлен движок Zend и выброшено много устаревшего

Ну на самом деле тут в этой статье инфа немного уже устарела, ибо писалась на форуме более чем полгода назад. По крайней мере применительно к использованию php 7 в режиме php-fpm, особенно на сервере под управлением панельки ISPmanager 5. В нем можно в любом режиме удобно юзать любую версию PHP. И 7, и даже 7.1. Это я как раз и показывал на видео. И в другой статье http://vpsadm.ru/php-7-ispmanager-5-kak-ustanovit/

Что касается работы без панели — то сложности могут быть только при запуске в режиме апач-модуля.

В том же centos такую возможность не знаю как вкорячить. Технически это разумеется возможно, просто я пока не знаю как)

Далее по версиям OS. Это зависит исключительно от удобства администрирования, от привычки работы с ними. Для большинства задач и сайтов мне видится Centos удобней. В Debian 8 легко можно поставить обе версии параллельно. По-умолчанию там ставится из стабильных официальных репов 5.6 версия. Но можно установить дополнительно 7ю версию и переключаться между ними. В режиме php-fpm можно запускать сайты параллельно на разных версиях, в режиме модуля апача можно юзать либо ту либо другую, легко между ними переключаться. В режиме CGI тоже можно, но его вообще не стоит юзать. Если только для отладки.

На продакшн ставят то, что нормально работает) Поэтому перед продакшном надо погонять в тестах 🙂 Буквально на прошлой неделе переводил на php 7 как раз самый что ни на есть продакшн — огромную онлайн-библиотеку с трафом 200к в сутки, работающую на кластере из трёх серваков. В паре с разрабом, так задолбались, несколько дней по ночам. Оно работало на debian 7, в который вообще нет технической возможности поставить толком php 7 в режиме апача. Пришлось апгрейдить OS до debian 8, и потом только ставить php 7. Переключить у нас получилось только с третьей попытки, первые две была нестабильность, тормоза, глюки и отвалившийся функционал. Причем, это с учетом того, что до этого было протестировано на PHP 7.

Источник

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

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