Admin Panel nach Update nicht mehr erreichbar (FastCGI Problem) Internal Server Error

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von d.hoffmann, 12. Apr. 2013.

  1. d.hoffmann

    d.hoffmann New Member

    Hallo,

    ich habe schon folgende Threads über Google gefunden, diese haben mich leider nicht weiter gebracht:

    ISPConfig no longer runs: 500 Internal Server error & mod_fcgid: error reading data - HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials
    http://www.howtoforge.de/forum/installation-und-konfiguration-12/ispconfig-rechte-neu-setzen-5529/

    zur Installation habe ich folgendes Tutorial verwendet:
    The Perfect Server - CentOS 6.2 x86_64 With Apache2 [ISPConfig 3] | HowtoForge - Linux Howtos and Tutorials

    die Forum Suche konnte leider nichts zu meinem Problem finden, deshalb erstelle ich diesen Thread. Sollte ich dadurch einen Doppelpost verursacht haben bitte ich um Entschuldigung.

    Mein System ist eine Produktiv-VM in einer ESX Umgebung:

    Code:
    CentOS release 6.3 (Final)
    
    Linux version 2.6.32-279.14.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Nov 6 23:43:09 UTC 2012
    
    PHP 5.3.3 (cli) (built: Jul  3 2012 16:53:21) 
    Copyright (c) 1997-2010 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
        with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    
    Es handelt sich dabei um einen reinen MailServer (keine Kunden Websites). Die Email-Accounts hatte ich mit einem selbst gebastelten Script über die API importiert (altes System war Plesk 8.6). Es lief auch alles ohne Probleme. Vor 3 Tagen habe ich ein Update von 3.0.4.6 auf 3.0.5.2 gemacht. Dazu bin ich wie folgt vorgegangen:

    Code:
    [root@mail ~] tar -zxvf ISPConfig-3.0.5.2.tar.gz
    [root@mail ~] cd ispconfig3_install/install
    [root@mail ~] php -q update.php
    
    rannte auch durch, lediglich mailman hat einen Fehler geschmissen, was aber nicht zu meinem Problem führen sollte.

    Das Admin Panel ist anch dem Update nicht mehr erreichbar (Internal Server Error). Schau ich in das ErrorLogFile von Apache stehen nur folgende Zeilen drin:

    loglevel: warn
    Code:
    [Fri Apr 12 14:39:52 2013] [warn] [client xx.xx.xx.xx] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
    [Fri Apr 12 14:39:52 2013] [error] [client xx.xx.xx.xx] Premature end of script headers: index.php
    
    loglevel: debug
    Code:
    [Fri Apr 12 15:28:30 2013] [notice] Apache/2.2.15 (Unix) DAV/2 mod_fcgid/2.3.7 PHP/5.3.3 mod_ruby/1.3.0 Ruby/1.8.7(2011-06-30) mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
    [Fri Apr 12 15:28:36 2013] [info] mod_fcgid: server xx.xx.de:/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter(13004) started
    [Fri Apr 12 15:28:37 2013] [warn] [client xx.xx.xx.xx] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
    [Fri Apr 12 15:28:42 2013] [debug] fcgid_pm_main.c(357): mod_fcgid: gracefully terminated 1 processes
    [Fri Apr 12 15:28:48 2013] [info] mod_fcgid: process /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter(13004) exit(communication error), terminated by calling exit(), return code: 0
    
    Also dachte ich, dass evtl. etwas mit den Rechten nicht stimmt.

    suexec.log:
    Code:
    [2013-04-12 14:39:52]: uid: (5003/ispconfig) gid: (5004/ispconfig) cmd: .php-fcgi-starter
    
    rechte der ispconfig web ordner:
    Code:
    [root@mail install]# id ispconfig
    uid=5003(ispconfig) gid=5004(ispconfig) Gruppen=5004(ispconfig)
    [root@mail install]# cat /etc/group |grep ispco
    ispconfig:x:5004:apache
    [root@mail install]# cd /var/www
    [root@mail www]# ls -la
    insgesamt 36
    drwxr-xr-x   9 root      root      4096  8. Apr 10:22 .
    drwxr-xr-x. 27 root      root      4096  8. Apr 09:59 ..
    drwxr-xr-x   2 ispapps   ispapps   4096  5. Dez 16:28 apps
    drwxr-xr-x   2 ispconfig ispconfig 4096 13. Feb 2012  cgi-bin
    drwxr-xr-x   3 root      root      4096  5. Dez 13:52 error
    drwxr-xr-x  12 ispconfig ispconfig 4096  8. Apr 10:22 html
    drwxr-xr-x   3 root      root      4096  5. Dez 13:52 icons
    lrwxrwxrwx   1 ispconfig ispconfig   34  5. Dez 16:28 ispconfig -> /usr/local/ispconfig/interface/web
    drwxr-xr-x   4 ispconfig ispconfig 4096  5. Dez 16:28 php-fcgi-scripts
    drwxr-xr-x   2 webalizer root      4096  1. Apr 03:10 usage
    [root@mail www]# ls -la ispconfig/
    insgesamt 132
    drwxr-x--- 20 ispconfig ispconfig  4096 12. Apr 11:16 .
    drwxr-x---  7 ispconfig ispconfig  4096  5. Dez 16:28 ..
    drwxr-x---  6 ispconfig ispconfig  4096  8. Apr 10:06 admin
    -rwxr-x---  1 ispconfig ispconfig  3146 12. Apr 14:54 capp.php
    drwxr-x---  6 ispconfig ispconfig  4096  8. Apr 10:06 client
    -rwxr-x---  1 ispconfig ispconfig  2977 12. Apr 14:54 content.php
    drwxr-x---  7 ispconfig ispconfig  4096  8. Apr 10:06 dashboard
    drwxr-x---  6 ispconfig ispconfig  4096  5. Dez 16:28 designer
    drwxr-x---  6 ispconfig ispconfig  4096  8. Apr 10:06 dns
    -rwxr-x---  1 ispconfig ispconfig     0 12. Apr 14:54 dummy_login.html
    -rwxr-x---  1 ispconfig ispconfig 18478 12. Apr 14:54 favicon.ico
    drwxr-x---  6 ispconfig ispconfig  4096  5. Dez 16:28 help
    -rwxr-x---  1 ispconfig ispconfig  2736 12. Apr 14:54 index.php
    drwxr-x---  3 ispconfig ispconfig  4096  8. Apr 10:06 js
    -rwxr-x---  1 ispconfig ispconfig  1650 12. Apr 14:54 keepalive.php
    drwxr-x---  4 ispconfig ispconfig  4096  5. Dez 16:28 login
    drwxr-x---  6 ispconfig ispconfig  4096  5. Dez 16:28 mail
    drwxr-x---  6 ispconfig ispconfig  4096  8. Apr 10:06 mailuser
    drwxr-x---  6 ispconfig ispconfig  4096  5. Dez 16:28 monitor
    -rwxr-x---  1 ispconfig ispconfig  4244 12. Apr 14:54 nav.php
    -rwxr-x---  1 ispconfig ispconfig    21  8. Apr 11:41 phpinfo.php
    drwxr-x---  2 ispconfig ispconfig  4096  5. Dez 16:28 remote
    -rwxr-x---  1 ispconfig ispconfig    25 12. Apr 14:54 robots.txt
    drwxr-x---  7 ispconfig ispconfig  4096  8. Apr 10:06 sites
    drwxr-x---  3 ispconfig ispconfig  4096  5. Dez 16:28 strengthmeter
    drwxrwx---  2 ispconfig ispconfig  4096  5. Dez 16:28 temp
    drwxr-x---  7 ispconfig ispconfig  4096  8. Apr 10:06 themes
    drwxr-x---  6 ispconfig ispconfig  4096  8. Apr 10:06 tools
    drwxr-x---  6 ispconfig ispconfig  4096  5. Dez 16:28 vm
    [root@mail www]# ls -la php-fcgi-scripts/
    insgesamt 16
    drwxr-xr-x 4 ispconfig ispconfig 4096  5. Dez 16:28 .
    drwxr-xr-x 9 root      root      4096  8. Apr 10:22 ..
    drwxr-xr-x 2 ispconfig ispconfig 4096  5. Dez 16:28 apps
    drwxr-xr-x 2 ispconfig ispconfig 4096  8. Apr 10:53 ispconfig
    [root@mail www]# ls -la php-fcgi-scripts/ispconfig/
    insgesamt 12
    drwxr-xr-x 2 ispconfig ispconfig 4096  8. Apr 10:53 .
    drwxr-xr-x 4 ispconfig ispconfig 4096  5. Dez 16:28 ..
    -rwxr-xr-x 1 ispconfig ispconfig  195 12. Apr 14:54 .php-fcgi-starter
    [root@mail www]#
    
    fastcgi-wrapper:
    Code:
    root@mail ispconfig]# cat ../../php-fcgi-scripts/ispconfig/.php-fcgi-starter 
    #!/bin/sh
    PHPRC=/etc/
    export PHPRC
    export PHP_FCGI_MAX_REQUESTS=5000
    export PHP_FCGI_CHILDREN=1
    exec /usr/bin/php-cgi -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispconfig/server/temp
    
    meine ispconfig.vhost config:
    Code:
    Listen 8080
    NameVirtualHost *:8080
    
    <VirtualHost _default_:8080>
      ServerAdmin xxxx@xxxxxx.xx
    
      <FilesMatch "\.ph(p3?|tml)$">
        SetHandler None
      </FilesMatch>
    
      <IfModule mod_fcgid.c>
        DocumentRoot /var/www/ispconfig/
        SuexecUserGroup ispconfig ispconfig
        <Directory /var/www/ispconfig/>
          Options Indexes FollowSymLinks MultiViews +ExecCGI
          AllowOverride AuthConfig Indexes Limit Options FileInfo
          AddHandler fcgid-script .php
          FCGIWrapper /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter .php
          Order allow,deny
          Allow from all
        </Directory>
        IPCCommTimeout  7200
            MaxRequestLen 15728640
      </IfModule>
    
      <IfModule mpm_itk_module>
        DocumentRoot /usr/local/ispconfig/interface/web/
            AssignUserId ispconfig ispconfig
        AddType application/x-httpd-php .php
        <Directory /usr/local/ispconfig/interface/web>
          php_admin_value open_basedir "/usr/local/ispconfig/interface:/usr/share:/tmp"
          Options FollowSymLinks
          AllowOverride None
          Order allow,deny
          Allow from all
          php_value magic_quotes_gpc        0
        </Directory>
      </IfModule>
    
      # ErrorLog /var/log/apache2/error.log
      # CustomLog /var/log/apache2/access.log combined
      ServerSignature Off
    
      <IfModule mod_security2.c>
        SecRuleEngine Off
      </IfModule>
    
      # SSL Configuration
      SSLEngine On
      SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt
      SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key
      #SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle
    
    </VirtualHost>
    
    <Directory /var/www/php-cgi-scripts>
        AllowOverride None
        Order Deny,Allow
        Deny from all
    </Directory>
    
    <Directory /var/www/php-fcgi-scripts>
        AllowOverride None
        Order Deny,Allow
        Deny from all
    </Directory>
    
    es funktioniert eben alles, bis auf das Admin Panel. Stelle ich zum Testen wieder auf das 3.0.4.6 Admin Panel ist es sofort wieder erreichbar. Allerdings denke ich, dass es eher nicht so gut ist, das Panel von 3.0.4.6 auf einem 3.0.5.2 System laufen zu lassen.

    Ich weiß nicht ob es jetzt am wrapper oder sogar einer Fehlerhaften mod_fcgid installation liegt. Eine Neuinstallation des FCGI-Moduls hat nichts gebracht.

    Wenn alle Stricke reißen, muss ich wohl erstmal wieder per Backup auf die 3.0.4.6 zurück.

    Bestimmt stehe ich auch einfach nur auf der Leitung und es ist eine Kleinigkeit, aber ich komme einfach nicht drauf!
     
  2. d.hoffmann

    d.hoffmann New Member

    Bis jetzt habe ich folgende Dinge probiert:

    den Fehler der beim update.php script bezüglich mailman geschmissen wird behoben. Wie erwartet lags nicht daran ;)

    Der FastCGI Serverprozess scheint auf jeden Fall gestartet zu werden wenn ich das Admin Panel aufrufe:

    Code:
    [root@mail install]# ps aux |grep php
    root     10066 26.9  0.5 368624 20604 ?        S    16:30   0:08 /usr/bin/php -q /usr/local/ispconfig/server/server.php
    5003     11474  2.6  0.3 297968 13264 ?        Ss   16:30   0:00 /usr/bin/php-cgi -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispconfig/server/temp
    5003     11504  0.0  0.1 297968  5584 ?        S    16:30   0:00 /usr/bin/php-cgi -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispconfig/server/temp
    root     11645  0.0  0.0 105308   876 pts/0    S+   16:30   0:00 grep php
    
    Nur aus irgendwelchen, für mich noch nicht ersichtlichen Gründen, steigt der FCGI-Server aus. Die oben aufgeführten cgi Prozesse "leben" nicht lange und werden immer wieder aufs neue gestartet, sobald das AdminPanel aufgerufen wird. Das ist denke ich aber so normal.
    Es wird auch folgender Stream zum FCGI-Socket File geöffnet:

    Code:
    [root@mail install]# netstat -ap |grep php
    unix  2      [ ACC ]     STREAM     HÖRT         132587363 14497/php-cgi       /var/run/mod_fcgid/9809.4
    [root@mail install]#
    
    Erhöhe ich die PHP_FCGI_CHILDREN=1 auf 8 im wrapper, werden auch schön brav 8 Prozesse gespawnt. Also der Aufruf klappt anscheinend.

    Das mod_fcgid Modul wird ebenfalls schön brav geladen:

    Code:
    [root@mail www]# apachectl -t -D DUMP_MODULES |grep fcgi
     fcgid_module (shared)
    Syntax OK
    [root@mail www]# 
    
    wenn ich ans Ende der index.php des AdminPanels ein schlichtes die(""); einbaue, kann ich mich ohne Probleme einloggen. Natürlich wird nach dem Login dann nur noch der Header angezeigt.

    Code:
    .
    .
    .
    if(isset($_SESSION['show_error_msg'])) {
        $app->tpl->setVar('show_error_msg', $_SESSION['show_error_msg']);
        unset($_SESSION['show_error_msg']);
    }
    
    $app->tpl_defaults();
    $app->tpl->pparse();
    die("");
    ?>
    
    Ich arbeite mich mal weiter durch die php-Files und hoffe der Ursache meines Problems auf die Schliche zu kommen.
     
  3. d.hoffmann

    d.hoffmann New Member

    Ich habs mit meiner Amateur-"die();" Methode zumindest soweit geschafft, dass die TopNavigation und der linke Navigationsframe angezeigt wird. Allerdings ist das immer so ne Sache sich durch einen fremden Quellcode zu wurschteln.

    Mir sind Außerdem im syslog noch folgende Zeilen aufgefallen:

    Code:
    Apr 18 13:51:20 mail kernel: php-cgi[2726]: segfault at 400000010 ip 00000000005c4216 sp 00007fff8098ee90 error 4 in php-cgi[400000+2c2000]
    Apr 18 13:51:21 mail abrtd: Directory 'ccpp-2013-04-18-13:51:20-2726' creation detected
    Apr 18 13:51:21 mail abrt[2736]: Saved core dump of pid 2726 (/usr/bin/php-cgi) to /var/spool/abrt/ccpp-2013-04-18-13:51:20-2726 (42663936 bytes)
    Apr 18 13:51:29 mail abrtd: Senden der E-Mail...
    Apr 18 13:51:29 mail abrtd: E-Mail wurde gesendet an: root@localhost
    Apr 18 13:51:30 mail abrtd: New problem directory /var/spool/abrt/ccpp-2013-04-18-13:51:20-2726, processing
    
    die php-cgi executable crashed also tatsächlich und es wird ein coredump geschrieben.

    dann wollte ich gleich mal schaun was da so alles an Infos zusammengetragen wurde:

    Code:
    [dhoffmann@mail ~] sudo gdb /usr/bin/php-cgi /var/spool/abrt/ccpp-2013-04-18-13:51:20-2726/coredump
    
    aber leider fehlten mir so ziemlich alle debuginfo packete ;)

    Also Debug.Repo aktivieren:
    Code:
    [dhoffmann@mail ~] sudo vi /etc/yum.repos.d/CentOS-Debuginfo.repo
    [debug]
    name=CentOS-6 - Debuginfo
    baseurl=http://debuginfo.centos.org/6/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-6
    enabled=1 <- aktivieren
    
    und anschließend die von gdb gewünschten Pakete installieren, und da hänge ich nun in einer Endlosschleife fest. Installiere ich php-debuginfo-5.3.3-22.el6.x86_64 kollidiert es mit php-extras-debuginfo-5.3.3-1.el6.x86_64 und anders herum. natürlich braucht gdb aber beide pakete -.-

    Code:
    Running Transaction Test
    
    
    Transaction Check Error:
      file /usr/lib/debug/usr/lib64/php/modules/tidy.so.debug from install of php-debuginfo-5.3.3-22.el6.x86_64 conflicts with file from package php-extras-debuginfo-5.3.3-1.el6.x86_64
      file /usr/src/debug/php-5.3.3/ext/tidy/tidy.c from install of php-debuginfo-5.3.3-22.el6.x86_64 conflicts with file from package php-extras-debuginfo-5.3.3-1.el6.x86_64
    
    Error Summary
    -------------
    
    gdb konnte zwar nicht alle Symbole auflösen, aber hat am Ende noch folgende Info ausgespuckt:

    Code:
    Core was generated by `/usr/bin/php-cgi -d magic_quotes_gpc=off -d session.save_path=/usr/local/ispcon'.
    Program terminated with signal 11, Segmentation fault.
    #0  zval_mark_grey (pz=<value optimized out>) at /usr/src/debug/php-5.3.3/Zend/zend_gc.c:372
    372				pz = *(zval**)p->pData;
    
    Ich hab bereits, über die vhost-config das Zend-Module deaktiviert, brachte aber keinen Erfolg.

    Ich bin erstmal zurück auf Version 3.0.4.6, da das AdminPanel dringend zur Mailbox-Verwaltung gebraucht wird.
     

Diese Seite empfehlen