LINUX.ORG.RU
ФорумAdmin

php4 нехочет работать как fast-cgi


0

1

Apache2.2, конфиг:

LoadModule fcgid_module libexec/apache22/mod_fcgid.so

<IfModule mod_fcgid.c>

  AddHandler    fcgid-script .fcgi

  AddHandler php-fcgi .php4
  Action php-fcgi /php-fcgi/php.sh

  Action application/x-httpd-fastphp /php-fcgi/php.sh
  Action application/x-httpd-php /php-fcgi/php.sh

  AddType application/x-httpd-fastphp     .php4

  <Location /php-fcgi/>
            Options ExecCGI FollowSymLinks
            SetHandler fcgid-script
  </Location>

</IfModule>

конфиг виртуального хоста:

ScriptAlias     /cgi-bin/ /home/web1/cgi-bin/
Alias           /php-fcgi/  /home/web1/cgi-bin/

 <Directory "/home/web1/cgi-bin/">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
 </Directory>

содержимое php.sh лежащего в /home/web1/cgi-bin/

#!/bin/sh
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
export PHPRC=/home/web1
#exec /usr/local/bin/php-cgi
exec /usr/local/php4/bin/php

#/usr/local/php4/bin/php -v

PHP 4.4.9 (cgi-fcgi) (built: Jan 22 2011 12:22:23)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

Пытаюсь выполнить php скрипт-internal server error 500, в логах:

Software caused connection abort: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: php.sh

На этом же сервере у меня есть php5, если я укажу в скрипте php.sh exec /usr/local/bin/php-cgi то все замечательно работает!

Подскажите, куда копать??? Спасибо!!!


Ответ на: комментарий от evi9

php.sh из консоли запускает /usr/local/php4/bin/php

Спасибо, Кэп!

А теперь хотелось бы посмотреть на http-заголовки, которые при этом отдает апачу твой php.sh. Ибо error.log прямо указывает на то, что ему эти заголовки пришлись не по душе. Так что запусти его из консоли и предоставь выхлоп, если реально нуждаешься в помощи.

r_asian ★☆☆
()
Ответ на: комментарий от evi9

Забегая вперёд, могу предположить, что у тебя php4 работает как cli, а не как cgi, но выхлоп ты всё равно давай. Причем и с php4 и c php5.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Запускаю «/usr/local/php4/bin/php -v»

PHP 4.4.9 (cgi-fcgi) (built: Jan 22 2011 12:22:23) Copyright (c) 1997-2008 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

evi9
() автор топика
Ответ на: комментарий от evi9

Ок. Подойдём к тебе с другой стороны.

Давай сюда выхлоп команд

echo '<?php echo "test\n";?>'|/usr/local/bin/php-cgi
echo '<?php echo "test\n";?>'|/usr/local/php4/bin/php

Чтобы окончательно подтвердить или опровергнуть мою теорию твоих глюков.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

# echo '<?php echo «test\n»;?>' | /usr/local/php4/bin/php
Content-type: text/html; charset=UTF-8

test

# echo '<?php echo «test\n»;?>' | /usr/local/bin/php-cgi
X-Powered-By: PHP/5.2.12
Content-type: text/html

evi9
() автор топика
Ответ на: комментарий от evi9

Однако, внезапно.

Пойдём дальше. Создай файлики

#!/bin/sh
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
export PHPRC=/home/web1
exec echo '<?php echo "test\n";?>' | /usr/local/php4/bin/php
#!/bin/sh
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
export PHPRC=/home/web1
exec echo '<?php echo "test\n";?>' | /usr/local/bin/php-cgi

Выхлоп опять же сюда.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

Вот:

# ./1.sh
X-Powered-By: PHP/5.2.12
Content-type: text/html

test

# ./2.sh
Content-type: text/html; charset=UTF-8

test
#

перый скрипт для php5, второй для php4

evi9
() автор топика
Ответ на: комментарий от evi9

Уф ... я - пас. А как cgi тебе php4 настроить удалось?

r_asian ★☆☆
()
Ответ на: комментарий от evi9

# /etc/init.d/httpd stop
# strace -o /tmp/log -s1024 -fvtTq /etc/init.d/httpd start &

# curl -i «http://здесь_URL_php_файла»
выдаст тебе сообщение об ошибке 500

# killall strace

далее смотришь /tmp/log (ахтунг!многабукв!) и анализируешь. Я обычно ищу по вызовам execve, дохожу до места, где апач пытается cgi скрипт выполнить, либо по тексту ошибки ищу, а потом вверх мотаю.

gorilych ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.