Syscp und fcgi, sporadisch Error 500

  • Hallo,
    ich habe auf einem vServer Silber Lenny mit einem SysCP 1.4.2.1 installiert.


    Leider habe ich ein kleines Problem beim Apachen mit mod_fcgi/suexec, leider ist bei dem Thema die SysCP Doku/Howto mangelhaft.


    Generell werden meine PHP Scripts ausgeführt, aber sporadisch kommt es zu Error 500 Internal Server Error Meldungen, leider habe ich dafür bisher noch keine Lösung gefunden.


    Hat jemand das ganze am laufen und könnte mir vieleicht einen Tip geben?


    /usr/bin/php5-cgi -v

    Zitat


    PHP 5.2.10-2 with Suhosin-Patch 0.9.7 (cgi-fcgi)

    /usr/lib/apache2/suexec -V

    Die Starterscripts liegen unter:

    Zitat


    /var/www/php-fcgi-scripts/userDir/domain.tld/

    Starterscript

    Virtual Host:

    Apache Error Log:

    Zitat


    [Wed Aug 12 19:40:24 2009] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
    [Wed Aug 12 19:40:24 2009] [error] [client IP] Premature end of script headers: xinfo.php

    Bin für jeden Hinweis dankbar!


    Gruß
    Phil

  • Interessanterweise treten diese Fehler nur bei den Kundenaccounts auf, SysCP welches eine identische Config nutzt aber unter /var/www/syscp liegt läuft absolut fehlerfrei.


    Sollte es am Ende an dem Verzeichnis liegen? Die Rechte sind soweit richtig gesetzt.

  • Zitat von [netcup] Alex;4837
    Code
    [Wed Aug 12 19:40:24 2009] [error] [client IP] Premature end of script headers: xinfo.php


    Aber wie kommt es dass das Script mal ausgeführt werden kann mal nicht, bei einem zweiten Aufruf klappt es dann problemlos.

  • Da steckt nur eine phpinfo(); drin, mehr nicht, das Problem tritt aber leider mit jeglichem php Script auf das unter /var/customers/webs/userDir/ liegt auf.


    In der error.log steht leider nicht mehr, im suexec.log steht garkein Fehler.


    Nochmal ein aktueller Auszug aus dem Log:

  • Hi, da ich auch am kämpfen bin syscp mit fcgi hinzubekommen wollte ich Dich mal fragen wie Du denn folgendes gelöst hast:


    chattr +i /var/www/php-fcgi-scripts/syscplocal/php-fcgi-starter



    das ist zwingend notwendig sonst funktioniert es nicht!!!


    Bei mir hat das aus dem Grunde bisher nicht funktioniert.
    Wenn du alles richtig einstellst und nur das nicht ausführst führt es dazu,
    dass Du Dein syscp nichtmehr aufrufen kannst.

  • Hi,


    bei mir war das Problem das alles ausser syscp probleme machte.
    Bei mir lag es aber an der PHP Version, die 5.2.10 macht mit fcgi probleme, mit 5.2.6 läufts problemlos.


    Code
    chattr +i /var/www/php-fcgi-scripts/syscplocal/php-fcgi-starter


    Konnte ich auf dem Vserver auch nicht ausführen.

  • hi,
    hat jemand vieleicht diese dateien für mich(schon angepasst):


    • /etc/nss-mysql-root.conf
    • /etc/nss-mysql.conf
    • /etc/nsswitch.conf


    vielen dank!

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • File: nsswitch.conf


    File: nss-mysql.conf

    nss-mysql-root.conf

  • danke!
    hatte in der zwischenzeit schon welche erstellt bzw. ne andere howto gefunden.
    aber zum laufen bekomme ich es auch nicht.
    anscheinend werden für kunden die rechte nicht richtig gesetzt oder die php.ini pass nicht.
    ich habe damit erstmal aufgegeben, bis ich mehr zeit hab.


    hätten wir nur iptables zur verfügung dann würde ich lieber ispcp einsetzten, hab ich auf nem root laufen und bin äusserst zufrieden.

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • hi,
    hatte mal wieder zeit und hab soweit alles am laufen.
    ich habe nur diesen fehler in den entspechenden user error-logs.

    Code
    [warn] mod_fcgid: stderr: PHP Fatal error:  require_once(): Failed opening required '/var/kunden/webs/pmx55/Settings.php' (include_path='.:/usr/share/php/:/usr/share/php5/') in /var/kunden/webs/pmx55/index.php on line 52

    und auf der seite sehe ich dann:(bei einem installiertem smf-forum über dem eigentlichem forum:

    Code
    [B]Warning[/B]:  file_exists() [[URL='http://pmx55.mine.nu/function.file-exists']function.file-exists[/URL]]: open_basedir restriction in effect. File(/var/kunden/webs/pmx55) is not within the allowed path(s):

    der apache suexec-log sagt mir:

    Code
    [2009-09-19 20:21:38]: uid: (10015/pmx55) gid: (10015/10015) cmd: php-fcgi-starter
    [2009-09-19 21:02:08]: uid: (9999/syscplocal) gid: (9999/9999) cmd: php-fcgi-starter
    [2009-09-19 21:03:01]: uid: (10015/pmx55) gid: (10015/10015) cmd: php-fcgi-starter
    [2009-09-19 21:03:19]: uid: (9999/syscplocal) gid: (9999/9999) cmd: php-fcgi-starter
    [2009-09-19 21:03:37]: uid: (10015/pmx55) gid: (10015/10015) cmd: php-fcgi-starter

    im apache error.log habe ich:

    Code
    [Sat Sep 19 21:03:37 2009] [notice] mod_fcgid: call /var/kunden/webs/pmx55/index.php with wrapper /var/www/php-fcgi-scripts/pmx55/pmx55.mine.nu/php-fcgi-starter
    [Sat Sep 19 21:03:37 2009] [notice] mod_fcgid: server /var/kunden/webs/pmx55/index.php(23430) started

    #php-cgi -v:

    Code
    PHP 5.2.0-8+etch15 (cgi-fcgi) (built: Apr 29 2009 17:13:36)
    Copyright (c) 1997-2006 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies

    #ps faux:

    Code
    pmx55    23430  0.0  0.8  60328  8540 ?        S    21:03   0:00  |   \_ /usr/bin/php-cgi -c /var/www/php-fcgi-scripts/pmx55/pmx55.min

    der vhost eintrag:

    syscp läuft ohne probleme für admin und user.


    so ich weiss nicht wo ich noch suchen soll.


    die umstellung auf php-fcgi habe ich mehrmals mit allen möglichen howtow´s nach-kontrolliert. da ich ja den standard pfad: /var/www/
    verwende ist ja auch kein neu-kompilieren nötig.


    vieleicht sieht ja jemand den crux.


    vielen dank

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • Zur openBasedir Restriction: Man muss einfach nur in den vHost Eintrag die openBasedir Option neu setzen:

    Info: Ich setze kein SysCP ein. Ist komplett selber getippt. In SysCP musste ein Textfeld zu finden sein, wo man erweiterte vHost Settings einstellen kann. Da kann ich aber nichts genaues zu sagen.

  • hi,
    danke!
    aber dann bekomme ich beim restart:

    Code
    /etc/init.d/apache2 force-reload
    Forcing reload of web server (apache2)... waiting Syntax error on line 69 of /etc/apache2/sites-enabled/99_syscp_vhosts.conf:
    Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration
     failed!


    ja im syscp kann ich ich ja per domain open base dir setzten oder nicht, nur das ändert nichts.

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • ich hab den fehler gefunden.
    im syscp - Settings - Webserver settings - Paths to append to OpenBasedir:
    steht /tmp/
    oder:
    /was/ihr/auch/immer/dort/habt/


    und die einstellung musste ich einfach löschen (also leer).


    jetzt funktioniert das system so wie es soll.


    vielen dank noch mal!

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • Dann hast Du aber keinen BaseDir Schutz mehr, und dein Script kann alle Dateien öffnen die normal Lesbar wären. Ich würde die Lieber empfehlen, folgendes in die Zeile einzutragen:

    Code
    /tmp/:/pfad/zum/documentroot:/usr/share/php/


    In /usr/share/php sind Sachen wie PEAR, das brauch die eine oder andere PHP Anwendung. /tmp wird sowieso für irgendwelchen temporären Kram gebraucht. Und dann natürlich der Document Root von der Domain. ;)

  • ne das ist schon richtig so mit leeren pfad-einstellungen
    das syscp trägt dann automatisch die richtigen pfade ein.


    es sind safe_mode und open_basedir aktiviert im syscp per domain
    und die entsprechenden einträge in den php.ini´s sind vorhanden.



    wäre ja auch ein wenig fatal wenn das syscp es so akzeptieren würde.

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!

  • ich war auch strikt gegen das teil(am anfang) aber durch mangel der iptables
    ist kein einsetzen von ispcp möglich.
    jetzt im nachhinein mit der umstellung auf fcgi sehe ich aber die guten möglichkeiten mit dem teil.
    die flexibilität durch die php.ini´s per domain und die möglichkeit der php einstellungen im syscp macht mir das leben leichter.


    sicher, wenn man nur ne handvoll user hat könnte man das auch manuell machen...aber so ist´s lustiger.


    mit ein wenig anpassen läuft der server im idle mit 98MB und bei vollen aktivitäten auf 8 domains nie höher wie 180-190 mb(ist aber relativ).
    webmail und das mail-system überhaupt sind sicher(soweit möglich)
    also alles in allem erstmal recht runt.

    Logic will take you from A to B. Imagination will take you everywhere.(A.Einstein)
    Nur wer sein Ziel kennt findet auch den Weg!