На хостинге Hostland интерпретатор PHP может работать в нескольких основных режимах. В этом обзоре мы рассмотрим следующие режимы работы:
- PHP как модуль Apache (mod_php)
- PHP как CGI приложение
- PHP в режиме работы php-fpm
PHP как модуль Apache (mod_php)
Данный режим является основным режимом работы php на хостинге Hostland. При этом режиме в настройках веб-сервера Apache подключается специально скомпилированный модуль mod_php. В этом случае каждый процесс веб-сервера будет включать в себя этот модуль. Выбор этого режима подходит для широкого спектра сайтов с большой и малой посещаемостью.
Преимущества:
- При каждом обращении к вебсерверу интерпретатор php уже загружен в память процесса обслуживающего соединение. Не нужно тратить лишние миллисекунды для того что бы исполнить код интерпретатора.
- Быстрое исполнение скриптов.
Недостатки:
- Конфигурирование php.ini выполняется исключительно системными администраторами хостинг провайдера, некоторые параметры можно объявить через файл .htaccess . Таким образом, если для сайта нужны гибкие настройки php.ini, то с этим могут возникнуть трудности.
- Загрузка модуля mod_php происходит во все процессы apache даже при отсутствии запросов на php скрипты, обрабатываемый этим модулем. За счет этого создается, незначительная, но бесполезная нагрузка на сервер.
PHP как CGI приложение
В этом режиме запускается интерпретатор php-cgi для всех скриптов, для которых установлен CGI в качестве обработчика. Если большая часть сайта состоит из статического содержимого, то CGI будет хорошим выбором, т.к. будет обеспечено экономичное использование оперативной памяти за счет того, что нужный интерпретатор будет вызываться в случае необходимости. Но, и в то же время, такой метод незначительно замедляет исполнение, т.к. при каждом запросе понадобится загрузка интерпретатора в память. Запуск PHP в режиме CGI позволяет указывать свой php.ini, что в свою очередь дает бóльшую гибкость в настройках php.
На хостинге Hostland установлены следующие интерпретаторы php, доступные для использования в режиме CGI:
/usr/local/php/php-5.2/bin/php-cgi /usr/local/php/php-5.3/bin/php-cgi /usr/local/php/php-5.4/bin/php-cgi /usr/local/php/php-5.5/bin/php-cgi /usr/local/php/php-5.6/bin/php-cgi /usr/local/php/php-7.0/bin/php-cgi /usr/local/php/php-7.1/bin/php-cgi /usr/local/php/php-7.2/bin/php-cgi /usr/local/php/php-7.3/bin/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:
#!/bin/bash
/usr/local/php/php-5.3/bin/php-cgi -c /home/hostXXXXXX/путь/к/файлу/php.ini
Закачать файл на сервер в ASCII-режиме в папку домена, на котором предполагается запускать PHP в режиме CGI. Например, для домена domain-name.ru это будет папка /domain-name.ru/htdocs/www/cgi-bin/. Если закачать файл не в ASCII-режиме, скрипт работать не будет, будет выдаваться ошибка 500 (Internal Server Error).
Установить на файл php.cgi права 0755 (rwxr-xr-x).
Создать файл.htaccess в директории домена /domain-name.ru/htdocs/www и поместить в него следующие директивы:
Action php-cgi /cgi-bin/php.cgi
AddHandler php-cgi .php .php3 .phtml
Теперь файлы с расширением.php, .php3, .php5 будут обрабатываться PHP интерпретатором в CGI-режиме.
Преимущества:
- Конфигурацию PHP можно сделать индивидуальной и очень гибкой для каждого сайта с помощью настроек php.ini.
- CGI использует оперативную память только если это действительно необходимо.
Недостатки:
- При каждом запросе понадобится загрузка интерпретатора в память, что может вызвать незначительные задержки (в пределах нескольких миллисекунд)
- Разработка PHP-авторизации с командой Header имеет ограничения по причине того, что скрипт будет получать не все необходимые серверные переменные.
Небольшая ремарка:
Из практики работы нашей технической поддержки: при переносе сайтов с других хостингов мы иногда сталкиваемся с ситуацией, в которой приложение отказывается работать в режиме модуля 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-хостинге мы с радостью поможем вам его настроить.
)
— Shopping Cart System for Windows 95 & NT представляет из
себя “движок” для Он-лайн магазинов. А где
магазины, там, как известно, кредитные
карточки:).
Насколько мне известно,
последняя версия данного продукта – Cart31 v
3.6, является также уязвимой, как и ее
предшественники.
Для начала ты должен
научиться находить этот скрипт, по дефолту
он находится в директории CGI-BIN или SCRIPTS на
сервере. Если ты внимательно читал мои
прошлые статьи, то прекрасно знаешь как
искать незащищенные сервера через
поисковые системы. Итак, идем на АльтаВисту
(www.altavista.com) и
в окошке поиска вводим: “/scripts/cart32.exe/”, “/cgi-bin/cart32.exe/”
и начинаем разгребать ссылки:).
1) Если в системе разрешен запрос “ERROR”, то
пробуем: www.host.org/cgi-bin/cart32.exe/error. Скрипт может
вывести море информации по установленной
на серваке системе, листинг директории /cgi-bin/cart32
и директории, куда установлена программа (стандартно
— C:\Program Files\MWAInc\Cart32).
Пример:
INIFile = C:\Program Files\MWAInc\Cart32\cart32.ini
CGI Information
CGI_ServerSoftware = Microsoft-IIS/4.0
CGI_ServerName = www.host.org
CGI_RequestMethod = GET
CGI_Referer =
GI_RemoteHost = 313.373.3.333
CGI_RemoteAddr = 313.373.3.334
CGI_UserAgent = Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
CGI_ContentLength =0
CGI_ScriptName = /cgi-bin/cart32.exe
CGI_ServerURL =
CGI_GatewayInterface =CGI/1.1
CGI_ServerProtocol =HTTP/1.1
CGI_ServerPort = 80
CGI_ContentType =
CGI_QueryString =
CGI_PathInfo = /error
CGI_Cookie =
2) Если повезет, то админ
сервака проинсталлирует все в один каталог,
например в cgi-bin, и, прочитав лог об ошибке (см.
предыдущий пункт), мы увидим, что в директории
/cgi-bin/ находятся файлы blahblah-[число]. В этих
файлах находятся долгожданные кредитные
карточки (в одном файле по одной креде).
Примечание: В старых версиях
вся информация о кредах хранилась в файле
blahblah-orders.txt
3) Стандартным паролем является «wemilo». C
данным паролем, вы можете пойти на
нижеприведенную ссылку, которая покажет
вам список всех юзеров и их хешированные
пароли:
http://www.victim.com/cgi-bin/cart32.exe/cart32clientlist
Воспользовавшись этой
уязвимостью, вы можете просмотреть список
всех пользователей и их хешированные
пароли. Хотя они и хешированные, их все
равно можно применить, введя
нижеприведенный URL:
http://www.host.org/cgi-bin/c32web.exe? TabName=Cart32%2B&Action=