Apache 2.2 выдает 400 Bad Request при обращении к PHP скриптам

motzart

Новичок
Apache 2.2 выдает 400 Bad Request при обращении к PHP скриптам

Добрый день!
Попробовал перейти на Apache 2.2.4 и PHP 5.2.2.

Скачал дистрибутив, установил сначала как модуль, но при попытки подключить расширения, сервис вылетает по исключению попытка чтения адреса 0x0000000 (точный адрес уже не помню)!

Решил установить как CGI.

Переустановил, но при попытке обращения к любой PHP страничке выдает ошибку 400 Bad Request в лог записывает Invalid URI in request.

Файл точно есть, если закомментировать:
Action application/x-httpd-php "C:\Program Files\PHP\php-cgi.exe"
То при обращении к той же странице выдает необработанный скрипт.

mod_actions, mod_mime и mod_cgi подключены.

Никаких ошибок при старте сервера не возникает.

Полистал документацию по Апачу, нашел, что надо установить в Options - ExecCGI - установил, сервер перезапустил но это не помогло!

Подскажите, в чем может быть проблема, и как с этим бороться?

-~{}~ 13.05.07 15:15:

Сегодня решил пойти в обход, поставил Zend Core 2 вместе с ним устанавливается как fast-cgi php 5.2.1.

PHP начал работать, но частично:
При отправке большинства POST запросов вылетает исключение PHP закрывается и выдается Internal Server Error.

-~{}~ 13.05.07 15:21:

И еще один вопрос:
Что может влиять (какие компоненты операционной системы, или ее настройки или другие приложения) на стабильность работы Apache и PHP?
 

Фанат

oncle terrible
Команда форума
Internal Server Error переводится, как "сообщение об ошибке см. в файле error_log"
 

motzart

Новичок
Я только что все переустановил, и логи очистил! :(

В этот раз опять пробую запустить PHP5 как CGI скрипт:
В httpd.conf есть строка:
ScriptAlias /php/ "C:/Program Files/PHP/"
Значить если написать что то типа: http://localhost/php/info.php будет обработан соответствеющий файл в указанной выше директории, пропробовал - сразу получил Forbidden добавил соответствующие права для доступа - Internal Server Error
в лог записано:
[Sun May 13 14:55:08 2007] [error] [client 127.0.0.1] C:/Program Files/PHP/info.php is not executable; ensure interpreted scripts have "#!" first line
[Sun May 13 14:55:08 2007] [error] [client 127.0.0.1] (9)Bad file descriptor: don't know how to spawn child process: C:/Program Files/PHP/info.php
Если прописать в настройках директории SetHandler applocation/x-httpd-php - возвращаемся все к тому же Bad Request-у!

Если обратиться к http://localhost/php/php-cgi.exe выдает содержание файла а не запускает его!
Если прописать AddHandler cgi-script .exe - опять получаем Bad Request!

-~{}~ 13.05.07 16:14:

У меня создается впечетление, что Apache вообще не обращается к указанному cgi сценарию!
Есть ли какая ни будь програмулина, для проверки cgi?

-~{}~ 13.05.07 16:40:

Кстати, только что поставил Apache 2.2.3 - тот же Bed Request!
 

phprus

Moderator
Команда форума
motzart
Попробуй сделать так, как сказано в инструкции:
Example 2-5. PHP and Apache 2.0 as CGI
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# For PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"
Те прописывать не:
Action application/x-httpd-php "C:\Program Files\PHP\php-cgi.exe"
А использовать ScriptAlias.
 

motzart

Новичок
Попробовал - не получилось!

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

Поставил PHP 4, он также не заработал на Apache 2.2.4. Сначала так-же выдавал Bad Request

Установил Apache 2.0.46. Настроил PHP по книжке:
Код:
AddHandler x-httpd-php php
ScriptAlias /_php/ "C:/Program Files/PHP4/"
Action x-httpd-php "C:/Program Files/PHP4/php.exe"
Попробовал эти же настройки перенести на Apache 2.2 - получил
Forbidden
You don't have permission to access /_php/php.exe/info.php on this server.

В error.log было записано:
[error] [client 127.0.0.1] client denied by server configuration: C:/Program Files/PHP4/php.exe, referer: http://localhost/

Интересно также то, что конфигурационные настройки, которые дулает PHP5 installer автоматически:
Код:
ScriptAlias /php/ "C:/Program Files/PHP4/"
Action application/x-httpd-php "C:/Program Files/PHP4/php.exe"
не работает и в Apache 2.0!

Кстати, как сервис мне его так и не удалось развернуть, пришлось устанавливать его как запускаемую консоль что немного неудобно, а что бы поставить его как сервис, надо, что-бы сервис назывался Apache20, а не Apache2 если подскажете как переименовать службу (кроме вмешательства в реестр), еще и так, что бы Монитор работал - буду очень благодарен!

-~{}~ 15.05.07 01:50:

Прогресс!!!

Только что запустил PHP 4 как CGI скрипт - проблемма была в том, что надо было в httpd.conf указать:
Код:
<Directory "C:/Program Files/PHP/">
    Options All
    Order allow,deny
    Allow from all
</Directory>
На радостях сразу решил попробовать с PHP5 - но получил пустую страницу! Посмотрел лог - все нормально, решил посмотреть исходный код страници и получил:
Код:
<? phpinfo(); ?>
А самое интересное то, что при запуске из командной строки PHP4 с параметром info.php (содержит выше указанный код), выводит страничку с инфо, а при обращении к PHP 5 выводит просто содержание файла!
После изменения файла info.php:
Код:
<?php phpinfo(); ?>
(открывающий тег не "<?" а "<?php") наконец получил инфо страничку!
 
Сверху