Борьба с mod_fcgid

    2012-01-19 14:00 | Автор: Vasile Chelban | Filed under: Vasile

    Не люблю малую информативность mod_fcgid. Понять почему не работает по ошибкам вроде "Premature end of script headers" или  "can't apply process slot for index.php" сложно. Критические ошибки PHP при этом могут никуда не попадать.

    Сегодня вновь боролся. Нашел решение только сравнивая файлы конфигурации с рабочей и нерабочей версией. Публикую наш рабочий файл /etc/httpd/conf.d/fcgid.conf:

    LoadModule fcgid_module modules/mod_fcgid.so
    
    # Use FastCGI to process .fcg .fcgi & .fpl scripts
    
    # Don't do this if mod_fastcgi is present, as it will try to do the same thing
    
    <IfModule !mod_fastcgi.c>
    
    AddHandler fcgid-script fcg fcgi fpl
    
    </IfModule>
    
    FCGIWrapper /usr/bin/php-cgi .php
    
    # Sane place to put sockets and shared memory file
    
    FcgidIPCDir /var/run/mod_fcgid
    
    FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm
    
    MaxRequestLen 131072000

    Отмеченная строка заставила себя искать в течении 30 минут.

    Другой нюанс не относящийся к FastCGI - mod_status обыкновенно включается через

    <Location /server-status>
         SetHandler server-status
    </Location>
    

    Так вот - Location директива имеет меньший приоритет чем Directory, Files или VirtualHost. Так что если первый VirtualHost (хост по умолчанию, который покрывает в том числе 127.0.0.1 адрес сервера) у вас использует, скажем mod_rewrite, то свой /server-status вы не увидите.

    Обмануть можно точечной настройкой целевого адреса (127.0.0.1)  используемого apachectl fullstatus:

    <VirtualHost 127.0.0.1:80>
        AllowOverride None
    </VirtualHost>
    1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
    Loading...

    Метки:

    Comments (0) »


    No comments yet.

    Leave a comment

    *