Не работает php как cgi

Не работает php как cgi

При указании пользователю php-cgi получаю
The requested URL /php-bin/php/info.php was not found on this server.
ISPmanager-Pro 4.3.51.1
CentOS 5.5 64-x
лог этого домена
[Fri Feb 04 04:21:01 2011] [error] [client x.x.x.x] script ‘/home/neone178/data/www/. /php-bin’ not found or unable to stat

php-cgi -m
[PHP Modules]
bz2
calendar
cgi
ctype
date
dom
exif
filter
ftp
gettext
gmp
hash
iconv
ionCube Loader
json
libxml
openssl
pcre
PDO
pdo_sqlite
posix
Reflection
session
shmop
SimpleXML
sockets
SPL
SQLite
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
Zend Optimizer
zlib

[Zend Modules]
Zend Extension Manager
Zend Optimizer
the ionCube PHP Loader

В домашней директории пользователя что-то не так с папкой php-bin или правами на нее

P.S. если удалить данную папку и в свойствах WWW домена снова включить PHP как CGI она пересоздастся

В домашней директории пользователя что-то не так с папкой php-bin или правами на нее

P.S. если удалить данную папку и в свойствах WWW домена снова включить PHP как CGI она пересоздастся
С павами все ок
drwxr-xr-x
удалил, пересоздалась, и уже 500-ая, логи апача

[Fri Feb 04 07:25:50 2011] [error] [client ] suexec policy violation: see suexec log for more details
[Fri Feb 04 07:25:50 2011] [error] [client ] Premature end of script headers: php

Читайте также:  Как настроить d link dir 825 как ретранслятор

[2011-02-04 07:25:47]: command not in docroot (/home/neone178/data/www/. /cgi-bin/az/aut_inf.cgi.aut_id=1005)
[2011-02-04 07:25:50]: uid: (1017/neone178) gid: (893/neone178) cmd: php
[2011-02-04 07:25:50]: command not in docroot (/home/neone178/data/php-bin/php)

suexec -V
-D AP_DOC_ROOT=»/var/www»
-D AP_GID_MIN=100
-D AP_HTTPD_USER=»apache»
-D AP_LOG_EXEC=»/var/log/httpd/suexec.log»
-D AP_SAFE_PATH=»/usr/local/bin:/usr/bin:/bin»
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX=»public_html»

как без пересборки suexec заставить выполнятся скрипт?
пользователи находятся в /home, а не в -D AP_DOC_ROOT=»/var/www»

У вас пользователя создаются почему-то с домашней директорией в /home, а должны с /var/www
Потому что так собран в Linux suexec у Apache собран с AP_DOC_ROOT=/var/www
В /usr/local/ispmgr/etc/ispmgr.conf должно быть прописано

path DefaultHomeDir /var/www
После правки надо перезапустить ISPmanager командой killall ispmgr и пересоздать пользователя. Либо ищите руководство как пересобрать в CentOS suexec с другим AP_DOC_ROOT (указать его /)
http://www.google.ru/search?client=opera&rls=ru&q=suexec+docroot+centos&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
http://at-byte.com/technology/recompile-apache-srcrpm-change-suexec-docroot-home

У вас пользователя создаются почему-то с домашней директорией в /home, а должны с /var/www
Потому что так собран в Linux suexec у Apache собран с AP_DOC_ROOT=/var/www
В /usr/local/ispmgr/etc/ispmgr.conf должно быть прописано

path DefaultHomeDir /var/www
После правки надо перезапустить ISPmanager командой killall ispmgr и пересоздать пользователя. Либо ищите руководство как пересобрать в CentOS suexec с другим AP_DOC_ROOT (указать его /)
http://www.google.ru/search?client=opera&rls=ru&q=suexec+docroot+centos&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
http://at-byte.com/technology/recompile-apache-srcrpm-change-suexec-docroot-home

а если этого пользователя симлинком кинуть в /var/www, поможет?

Источник

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

На хостинге 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:

Переключить 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-хостинге мы с радостью поможем вам его настроить.

Источник

Тема: php-cgi не работает

Опции темы
Поиск по теме

php-cgi не работает

При указании пользователю php-cgi получаю
The requested URL /php-bin/php/info.php was not found on this server.
ISPmanager-Pro 4.3.51.1
CentOS 5.5 64-x
лог этого домена
[Fri Feb 04 04:21:01 2011] [error] [client x.x.x.x] script ‘/home/neone178/data/www/. /php-bin’ not found or unable to stat

php-cgi -m
[PHP Modules]
bz2
calendar
cgi
ctype
date
dom
exif
filter
ftp
gettext
gmp
hash
iconv
ionCube Loader
json
libxml
openssl
pcre
PDO
pdo_sqlite
posix
Reflection
session
shmop
SimpleXML
sockets
SPL
SQLite
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
Zend Optimizer
zlib

[Zend Modules]
Zend Extension Manager
Zend Optimizer
the ionCube PHP Loader

Последний раз редактировалось dvizhok; 04.02.2011 в 10:46 .

В домашней директории пользователя что-то не так с папкой php-bin или правами на нее

P.S. если удалить данную папку и в свойствах WWW домена снова включить PHP как CGI она пересоздастся

В домашней директории пользователя что-то не так с папкой php-bin или правами на нее

P.S. если удалить данную папку и в свойствах WWW домена снова включить PHP как CGI она пересоздастся

С павами все ок
drwxr-xr-x
удалил, пересоздалась, и уже 500-ая, логи апача

[Fri Feb 04 07:25:50 2011] [error] [client ] suexec policy violation: see suexec log for more details
[Fri Feb 04 07:25:50 2011] [error] [client ] Premature end of script headers: php

[2011-02-04 07:25:47]: command not in docroot (/home/neone178/data/www/. /cgi-bin/az/aut_inf.cgi.aut_id=1005)
[2011-02-04 07:25:50]: uid: (1017/neone178) gid: (893/neone178) cmd: php
[2011-02-04 07:25:50]: command not in docroot (/home/neone178/data/php-bin/php)

suexec -V
-D AP_DOC_ROOT=»/var/www»
-D AP_GID_MIN=100
-D AP_HTTPD_USER=»apache»
-D AP_LOG_EXEC=»/var/log/httpd/suexec.log»
-D AP_SAFE_PATH=»/usr/local/bin:/usr/bin:/bin»
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX=»public_html»

как без пересборки suexec заставить выполнятся скрипт?
пользователи находятся в /home, а не в -D AP_DOC_ROOT=»/var/www»

Последний раз редактировалось dvizhok; 04.02.2011 в 13:45 .

Источник

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

Интерпретатор PHP может работать в нескольких режимах. В этой статье рассматриваются следующие режимы работы:

Каждый из указанных режимов имеет как преимущества, так и недостатки. Те и другие качества в представляем ниже.

Содержание

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

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

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

  • Доступны настройки кэширования, за счет чего можно увеличить производительность.
  • Быстрое исполнение скриптов.

Недостатки:

  • Конфигурирование можно выполнять только через основной файл php.ini и некоторые параметры можно объявить через файл htaccess.
  • По умолчанию скрипты запускаются с правами пользователя apache. Однако это можно изменить путем использования mod_ruid, который позволяет запускать скрипты от разных пользователей.
  • Подгрузка модуля происходит во все процессы apache даже при отсутствии запросов на тип скрипта, обрабатываемый этим модулем. За счет этого создается бесполезная нагрузка на сервер.
  • Скрипт, имеющий ошибки, может привести к сбою работы веб-сервера.
  • Нет простого способа узнать, каким пользователем было запущено стороннее приложение.
  • Некоторые модули имеют проблемы в совместимости с многопоточным запуском веб-сервера (MPM Worker).

PHP в режиме CGI

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

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

  • Обработчик CGI может быть запущен с правами любого пользователя системы (с помощью suexec).
  • Конфигурацию PHP можно сделать индивидуальной для каждого пользователя.
  • CGI использует оперативную память только если это действительно необходимо.
  • Благодаря тому, что PHP интерпретатор работает как независимый процесс, вероятность сбоя работы Apache из-за ошибок в скриптах практически нулевая.
  • Каждый клиент может выбрать индивидуальную версию PHP.

Недостатки:

  • Не высокая производительность.
  • Разработка PHP-авторизации с командой Header имеет ограничения по причине того, что скрипт будет получать не все необходимые серверные переменные.

SuPHP

SuPHP является частным случаем CGI, в котором каждый php скрипт может выполняться с привилегиями разных пользователей.

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

  • Можно отследить, от имени какого пользователя запускался скрипт.
  • Пользователь не сможет запустить скрипты, если он не является их владельцем.
  • Для всех файлов, которые будут загружены на сервер через сайт, будет установлен владельцем тот пользователь, от имени которого эти файлы загружались.

Недостатки:

  • Сравнительно с CGI более высокая нагрузка на CPU.
  • Недоступны функции кэширования, например, XCache, APC и др.

PHP в режиме FastCGI (mod_fastcgi)

По своим свойствам FastCGI является золотой серединой между mod_php и CGI режимами. В нём исключены недостатки CGI и присутствуют его достоинства. При включенном FastCGI, в ОЗУ сервера располагается постоянно запущенный процесс-обработчик. Это избавляет от необходимости при каждом запросе запускать новый процесс, как в случае использования CGI. По быстродействию FastCGI аналогичен mod_php.

FastCGI сочитает в себе преимущества всех приведенных выше режимов. В этом случае php-обработчик запускается на постоянной основе, и теперь на каждый запрос не нужно создавать новый процесс, что было свойственно режиму CGI. FastCGI особенно подходит для высоконагруженных сайтов, нагрузка на которые постоянна.

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

  • Можно улучшить производительность используя кэширование.
  • Скрипты запускаются от имени их владельца.
  • Риск зависания минимизирован за счет существования переменной, определяющей количество запросов, которые можно обслужить до плановой перезагрузки интерпретатора.

Недостатки:

  • Постоянно запущенный процесс интерпретатора создает нагрузку на оперативную память, хотя её объем меньше, чем при использовании PHP как модуля Apache. Это достигается за счет отсутствия необходимости обращения к интерпретатору PHP при выдаче статического содержимого.

LSPHP

LiteSpeed PHP (LSPHP) — реализован в виде модуля mod_lsapi на веб-сервере Apache и является наиболее производительным вариантом запуска PHP на серверах под управлением сPanel.

  • Увеличение скорости обработки PHP-скриптов, что ускоряет работу всего сайта.
  • Отсутствие 500-ой ошибки при наличии php_flag и подобных директив в .htaccess. Актуально при переезде с хостинга, который по умолчанию работал с mod_php.
  • Уменьшится потребление ресурсов в вашем виртуальном контейнере.
  • Улучшится эффективность работы Opcode Cache

На данный момент недостатков не было обнаружено.

Более подробно о работе LSPHP можно прочитать в нашем блоге в статье «Ускорьте работу своего сайта, перейдя на LSPHP».

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

Каким образом узнать текущий режим PHP?

Способ 1. С помощью функции phpinfo()

  • Создаем на хостинге php-файл c произвольным именем (например, info.php), после чего открываем его для редактирования и копируем в него следующие строки:
  • Сохраняем внесенные изменения, после чего открываем файл в браузере.
  • Если все данные были указаны верно, то в браузере будет выведена страница с развернутой информацией об установленном PHP. В перечне выведенных параметров будет присутствовать параметр Server API, в значении которого и отображается текущий режим PHP.
  • На изображении ниже показано значение параметра Server API в случае использования режима FastCGI.

Способ 2. С помощью функции функции php_sapi_name()

  • По аналогии первого способа, создаем на хостинге файл, например, info.php, затем открываем для редактирования и затем копируем следующий код:
  • После сохранения изменений открываем этот файл в браузере. В итоге должна быть отображена страница в теле которой будет выведено название используемого режима PHP. На изображении ниже представлен пример вывода при использовании режима FastCGI.

Уже знаете, какое доменное имя хотите получить для вашего веб-сайта? У нас вы можете купить домен дешево. Нужен хостинг? HOSTiQ предлагает интересные планы виртуального хостинга, а также вы сможете заказать VPS-сервер или арендовать сервер в Европе или США.

Источник

Оцените статью