PHP Fastcgi モードが機能しません。「Premature end of script headers」

Created:

2016-11-16 13:18:18 UTC

Modified:

2017-08-16 16:28:46 UTC

8

Was this article helpful?


Have more questions?

リクエストを送信

PHP Fastcgi モードが機能しません。「Premature end of script headers」

Applicable to:

  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux

症状

  1. PHP モードを fastcgi に切り替える際にセカンダリ PHP が機能していません。

    # tailf /var/www/vhosts/domain.tld/logs/error_log
    
    (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
    Premature end of script headers: index.php
    
  2. Apache ログにメモリエラーが表示されます。

    less /etc/httpd/logs/error_log
    
    Apache/2.2.15 (Unix) DAV/2 mod_fcgid/2.3.7 mod_python/3.3.1 Python/2.6.6 mod_ssl/2.2.15 OpenSSL/1.0.0-fips SVN/1.6.11 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations 
    [Errno 12] Cannot allocate memory 
    
  3. Syslog に suhosin アラートが表示されます。

    less /var/log/syslog
    

    hosting suhosin[32242]: ALERT - zend_mm_head corrupted at 0x2e02420 (attacker '91.204.25.4', file '/var/www/vhosts/krieger-avocats.lu/httpdocs/index.php')

  4. Suexec ログにエラーが表示されます。

    # tailf /var/log/httpd/suexec_log
    
    uid: (10033/ftpuser) gid: (504/504) cmd: cgi_wrapper
    unknown error in docroot check (10033)
    

原因

1) PHP が fastcgi でコンパイルされていません。

2) サーバのメモリが十分ではありません。

3) ドメイン php.ini がカスタマイズされ、誤植エラーがあるか、無効な構成があります。

4) /etc/passwd ファイルのパーミッションが正しくありません。

5) 特定の php モジュールの互換性に問題があります。

解決策

1) PHP が fastcgi でコンパイルされていることを確認します。fastcgi モジュールが有効かどうかは、以下のコマンドでチェックすることができます。

    # /usr/local/psa/admin/bin/php_handlers_control --list
    id:  display name:  version:    type:                                     cgi-bin:                php.ini:
    fastcgi-5.2.17         5.2.17    5.2.17      cgi  /usr/local/php5.2.17/bin/php-cgi  /usr/local/lib/php.ini

PHP バージョンをチェックします。

    # /usr/local/php5.2.17-cgi/bin/php-cgi -v
    PHP 5.2.17 (cgi) (built: Mar 27 2014 20:28:44)
    Copyright (c) 1997-2010 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

この例では、5.2.17 (cgi) と表示されています。つまり、PHP は CGI モードのみで機能します。PHP が CGI モードと FastCGI モードの両方で機能する機能する場合、以下のようになります。

    # php-cgi -v
    PHP 5.3.3 (cgi-fcgi) (built: Jul 12 2013 20:34:01)
    Copyright (c) 1997-2010 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
        with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd.

PHP が FastCGI モードでコンパイルされていない場合、オプション "--enable-fastcgi" を指定してカスタム php をリコンパイルしてください。

2) 次のコマンドを使用して、サーバのメモリが十分であることを確認します。

    free -m

サーバが仮想コンテナである場合、以下のコマンドでリソース上限を確認できます。

    cat /proc/user_beancounters

3) ドメイン php.ini が手動でカスタマイズされているか、エラーが含まれています。例えば、php.ini でメガバイトが 128M ではなく 128MB と設定されている場合があります。

オリジナルのドメイン php.ini をバックアップし、ドメインを再構成します。

 mv  /var/www/vhosts/domain.tld/etc/php.ini /var/www/vhosts/domain.tld/etc/php.ini_orig

 /usr/local/psa/admin/bin/httpdmng --reconfigure-vhost --vhost-name=domain.tld

11.5 以降の Plesk では、以下のコマンドを使用します。

 /usr/local/psa/admin/bin/httpdmng --reconfigure-domain domain.tld

4) /etc/passwd ファイルのパーミッションをチェックします。以下のように設定されているべきです。

    # ls -la /etc/passwd
    -rw-r--r-- 1 root root 7643 Mar  3 12:54 /etc/passwd

異なる設定になっている場合、上記のように修正してください。

他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。