Drupal и CGI PHP

Главные вкладки

Аватар пользователя AdVv AdVv 10 ноября 2010 в 19:09

Настроил на собственном сервере связку Apache 2 + PHP5, PHP вызывается как cgi. Простой тест на phpinfo() отрабатывает нормально, а вот попытка запустить Drupal 6 не увенчалась успехом - страничка отображается коряво, в логе апача ошибки вида
script not found or unable to stat: /home/www/cgi-bin/sites, referer: http://exemple.ru/. В том, что отображается на главной ко всем ссылкам после названия сайта добавляется /cgi-bin/. Т.е. вместо правильной ссылки http://exemple.ru/user/register получается ссылка вида http://exemple.ru/cgi-bin/user/register, которая ведет на 404. Если перенастроить Apache на использование mod_php, то все начинает работать нормально. Подскажите где копать ?

Комментарии

Аватар пользователя vgoodvin vgoodvin 10 ноября 2010 в 22:45

CGI (не FastCGI) - на продакшен (да и не только) не ставится уже. Это как бы сейчас глупость делать по форку на запрос.
Настройте по человечески через mod_php или php-fpm.

Аватар пользователя Azerot Azerot 11 ноября 2010 в 8:58

vgoodvin, не знаете, чего писать?
AdVv, вы криво настроили свой хостинг вот и всё. У меня на куче серверов под разными версиями PHP работает как CGI и довольны и счастливы все.

Почитайте, там довольно хорошо расписано:
http://drupalist.org.ru/docs/install_linux6.html

Аватар пользователя vgoodvin vgoodvin 11 ноября 2010 в 10:20

"Azerot" wrote:
У меня на куче серверов под разными версиями PHP работает как CGI и довольны и счастливы все.

А как в сравнении с другими вариантами? Вам на хостинге виднее, хочу спросить. И почему все же CGI? Чем оно хорошо?

Аватар пользователя AdVv AdVv 11 ноября 2010 в 10:48

Не ругайтесь !
Хостинг собственный, пробую разные варианты, чтобы прежде всего разбираться в вопросе.
cgi рассматривается прежде всего для запуска php скриптов с правами пользователя, а не веб сервера.
То, что что-то настроено криво и друпал тут не причем я прекрасно понимаю, потому и прошу помощи.
php-fpm тоже осваиваю, так что если у вас есть опыт - оставьте координаты, документация по нему скудная,
многих базовых моментов я не понимаю.
Ссылка от Azerot на данный момент к сожалению у меня не открывается - сайт drupalist.org.ru недоступен.
Порывшись немного в исходниках, я выяснил что злополучное /cgi-bin/ попадает в переменную $base_path друпала, отсюда и все проблемы. Берет его друпал из $_SERVER['SCRIPT_FILENAME'], в котором на тот момент содержится /cgi-bin/php5.cgi. Система FreeBSD 7.3 stable, php5-5.3.3_2 и apache-2.2.17_1. Есть идеи ?

Аватар пользователя Azerot Azerot 11 ноября 2010 в 12:20

Попробуйте снова. У меня открывается и открывалось.

Quote:
А как в сравнении с другими вариантами? Вам на хостинге виднее, хочу спросить. И почему все же CGI? Чем оно хорошо?

Режим CGI имеет достоинства и недостатки. Недостатки - самая фиговая производительность из всех возможных режимов работы PHP. Не будет работать акселератор.

Дальше же только достоинства:
1. Максимальная безопасность! Поскольку все PHP выполняются с правами клиента, то скрипты не имеют никакого доступа к каталогам и файлам других клиентов.
2. Возможность более уверенного контроля ресурсов сервера через директивы apache: RLimitNProc, RLimitMemory, RLimitCPU
3. Возможность мониторинга работы PHP скриптов, ибо каждый из них выглядит как отдельный процесс PHP и легко можно увидеть сколько их запущено одновременно и сколько CPU и памяти жрёт каждый из них
4. Возможность назначить персональную версию PHP каждому клиенту. Т.е. одному можно включить PHP 4, Другому PHP 5.1, третьему PHP 5.2 и т.д.
5. Возможность назначить каждому клиенту персональный конфиг php.ini со своими параметрами и лимитами.
6. Возможность жёстко ограничить время выполнения PHP-скрипта системными средствами (как известно ограничения самого PHP типа max_execution_time высчитывается по времени занятости процессора, а не по абсолютному времени, что может быть крайне неудобным, например, в случае если какой-то скрипт занял кучу памяти и висит в sleep'е очень долгое время).