- Не работает php как cgi
- Режимы работы PHP
- PHP как модуль Apache (mod_php)
- Преимущества:
- Недостатки:
- PHP как CGI приложение
- Преимущества:
- Недостатки:
- Небольшая ремарка:
- PHP в режиме работы php-fpm
- Тема: php-cgi не работает
- php-cgi не работает
- Режимы работы PHP
- Содержание
- PHP как модуль Apache (mod_php)
- PHP в режиме CGI
- SuPHP
- PHP в режиме FastCGI (mod_fastcgi)
- LSPHP
- Каким образом узнать текущий режим PHP?
Не работает 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
[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-сервер или арендовать сервер в Европе или США.
Источник