wiberg: Session Support nachträglich installieren

Hi,

mein Problem: Die Standardinstallation von Apache/PHP/MySQL auf SuSE 9.1 enthält keinen Session Support. Ohne Sessions kann ich ein dringendes Projekt aber nicht fertigstellen. Das Session-Paket für PHP 4 habe ich bei SuSE schon heruntergeladen und installiert, aber ich weiß nicht, was ich noch machen muss, damit es auch funktioniert! Langsam werde ich echt hibbelig, denn es ist ziemlich knapp ^^.
Vielen Dank und freundlichen Gruß,

Wiberg

  1. Moin!

    Du musst a) schauen, ob das Session- Modul in der PHP-ini aufgeführt ist und ob es sich in dem Pfad befindet, der in der PHP.ini als der Pfad aufgeführt ist, in dem sich die ladbaren Module befinden.

    b) Wenn es an dem ist und Du das PHP4- Modul mit dem Indianer nutzt, dann starte den Apache neu.

    php.ini untersuchen: less /etc/php.ini

    Da sollte folgendes zu finden sein:
    ; Directory in which the loadable extensions (modules) reside.
    extension_dir = "./"
    extension_dir = /usr/share/extensions/no-debug-non-zts-20020429
    ...

    Außerdem suche nach:
    [Session]
    ...

    apache neu starten:  (als root)  /etc/init.d/apache restart

    Das sollte eigentlich genügen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Moin!

      Du musst a) schauen, ob das Session- Modul in der PHP-ini aufgeführt ist und ob es sich in dem Pfad befindet, der in der PHP.ini als der Pfad aufgeführt ist, in dem sich die ladbaren Module befinden.

      yo, in /usr/share/extensions/ gibt es session.so
      diese Datei wird auch in der php.ini aufgeführt.

      b) Wenn es an dem ist und Du das PHP4- Modul mit dem Indianer nutzt, dann starte den Apache neu.

      php.ini untersuchen: less /etc/php.ini

      Da sollte folgendes zu finden sein:
      ; Directory in which the loadable extensions (modules) reside.
      extension_dir = "./"
      extension_dir = /usr/share/extensions/no-debug-non-zts-20020429
      ...

      bei mir steht da das selbe, bis auf "no-debug-non-zts-20020429".

      Außerdem suche nach:
      [Session]
      ...

      gibt es auch. Sessioneinstellungen... sieht alles normal aus.

      apache neu starten:  (als root)  /etc/init.d/apache restart

      Das sollte eigentlich genügen.

      Genügt aber leider trotzdem nicht. "Fatal error: Call to undefined function: session_start()". Das ist so gemein :-(( Hätte jemand noch eine Idee?

      Gruß
      Wiberg

      1. Moin!

        [Session]
        Ok. Ich kümmere morgen (heute) darum. In Kassel ist zur Zeit Zissel und da hab ich mal augenblicklich andere "Sorgen" oder Promille... Außerdem bin ich ja nicht der SuSE- Installations- Support.
        Alles, was ich hier teste ist eh SuSE 9.0 (9.1 ist im Debian- Jargong "Sid"). Da ich mit Sessions nichts am Hut habe (ich programmiere sowas lieber von Hand, zumal es sich auf wenige Funktionen und je  Skript auf einen Include beschränkt...) habe ich da noch nichts großartiges untersucht.

        [Eine Frage an die Gemeinschaft]
        Ich habe gestern aus Eigennutz und mit telefonischer Hilfe einer der Damen vom Technik- Team der Sparkasse Chemnitz einen mt940(SWIFT-Version)-Zerleger geschrieben und rein eigennützig recht ordentlich kommentiert (Die Kommentare waren quasi das Pflichtenheft). Könnte für selbstgestrickte Homebanking- Geschichten (mein Gnu- Cash will nicht...) interessant sein. Will das Ding jemand haben? Oder intessiert sowas vielleicht als Artikel für einen der Bereiche von SelfAktuell?

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      2. Moin!

        Ok. Wir versuchen es am Prompt:

        user@rechner:~> php -m | grep session

        Heraus sollte kommen:
        session

        Wenn nicht: starte mal den Apache neu und schaue mit dem tail die letzten 50 Zeilen des error_log an:

        tail -n 50 /var/logs/apache2/error_log

        Eventuell finden sich da Hinweise (bei PHP als Modul...)

        Wenn doch nicht:
        Du hast das Modul mit Yast istalliert? Wenn nein: deinstalliere es und installiere es erneut mit dem Yast.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. Moin!

          Hi!

          user@rechner:~> php -m | grep session

          Heraus sollte kommen:
          session

          Da kommt: PHP Warning:  Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/session.so' - libmm.so.13: cannot open shared object file: No such file or directory in Unknown on line 0

          tail -n 50 /var/log/apache2/error_log

          sagt:
          PHP Warning:  Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/session.so' - libmm.so.13: cannot open shared object file: No such file or directory in Unknown on line 0
          [Sun Aug 01 15:11:12 2004] [notice] Apache/2.0.49 (Linux/SuSE) configured -- resuming normal operations
          [Sun Aug 01 15:14:31 2004] [notice] caught SIGTERM, shutting down
          [Mon Aug 02 13:10:30 2004] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
          [Mon Aug 02 13:10:30 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
          PHP Warning:  Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/session.so' - libmm.so.13: cannot open shared object file: No such file or directory in Unknown on line 0
          [Mon Aug 02 13:10:31 2004] [notice] Apache/2.0.49 (Linux/SuSE) configured -- resuming normal operations

          Ich denke, "Init: Session Cache is not configured" ist wohl wichtig. Und eben die selbe Warnung vonwegen die Datei nicht gefunden... Die Datei befindet soch übrigens sehr wohl an Ort und Stelle :-/
          Und: Ja, hab die zusätzliche Session-Support-Datei mit YaST installiert. Scheint ja auch teilweise gut geklappt zu haben, in der php.ini steht /usr/lib/php/extensions/session.so jedenfalls klar und deutlich drin ^^.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          Vielen Dank für deine Unterstützung - vielleicht klappt's ja irgendwann :-)

          wiberg

          1. Hi,

            Ich denke, "Init: Session Cache is not configured" ist wohl wichtig. Und eben die selbe Warnung vonwegen die Datei nicht gefunden... Die Datei befindet soch übrigens sehr wohl an Ort und Stelle :-/

            Welche Berechtigungen sind für die Datei gesetzt? Hat der User, unter dem der Apache bzw. PHP läuft, Zugriff auf die Datei?

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Es sind Root-Rechte. Läuft Apache nicht unter Root-Rechten? Ich versuche mal, was passiert, wenn ich es ändere.

              ...

              prökel...

              So. Findet die Funktion session_start() immernoch nicht, deswegen gehe ich davon aus, dass die Freigabe der Datei session.so im extentions-Verzeichnis nichts gebracht hatte. Trotzdem Danke für die Unterstützung.

              in Abhängigkeit - Wiberg

              1. Moin!

                Es sind Root-Rechte. Läuft Apache nicht unter Root-Rechten? Ich versuche mal, was passiert, wenn ich es ändere.

                Hm. Unter SuSE 9.1 ist scheinbar alles möglich. Mal wieder eine neues SID verkauft. *mecker*

                Eigentlich sollte der Apache zwar vom Root gestartet werden (init- Skripte), aber dann auf einen anderen benutzer schwenken (wwwrun).

                Den findest Du in der mit less -r /etc/passwd ganz oben, falls Deine Benutzer nicht gerade x.y. oder z beginnen. (natürlich geht auch sort /etc/passwd | tail -n1)

                Die Zeile sollte etwa so aussehen:

                wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
                Benutzer:Passwort in Shadow:UID:GID:Beschreibung:Home:Shell
                das bin/false ist korrekt, somit kann sich niemand als Apache anmelden.

                Überprüfe also, ob dieser "Benutzer" Zugriff hat. Du kannst als Root jederzeit mit "su wwwrun" in dessen Rolle schlüpfen (und behältst Deine Shell).

                Du kannst dann zum Beispiel "php -m" aufrufen.
                oder php < sessionskript.php oder oder oder...
                In dem Fall bekommst Du aber die Fehler angezeigt und nicht in das error_log geschrieben.

                Am besten: Du willst einen  Webserver? Nimm Debian. Sorry nach Franken.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                1. Ich hab der Datei session.so mit chmod a+rwx ./session.so alle Rechte für alle Benutzer gegeben... aber es haut trotzdem nicht hin. Ferner kann ich mich nicht als wwwrun einloggen, weil ich das Passwort nicht kenne. Kann mich nicht erinnern, das je eingegeben zu haben. Trotzdem danke für die Unterstützung, ich bin mir sicher, es klappt bald :-)

                  • Wiberg

                  PS: Wir könnten das auch aud ICQ order IRC verlagern, wenn das praktischer ist. ICQ# 104892300

                  1. Moin!

                    Ferner kann ich mich nicht als wwwrun einloggen, weil ich das Passwort nicht kenne.

                    wwwrun hat kein Passwort... Er kann sich nicht einloggen, weil das verschlüsselte Passwort genau einen Stern ergeben müsste und das geht mit den verwendeten Verschlüsselungsverfahren nicht.
                    Dennoch kann man gegenüber dem System "so tun" als wäre man "wwwrun":

                    [0] (Voraussetzungen)

                    • Du bist als Benutzer auf einem Standard- SuSE eingeloggt.
                    • Du machst eine Konsole / wterm / xterm / telnet / shh oder sonstwas auf. Oder drückst meinetwegen [CTR][ALT][Fx] (x E 1...6)
                    • Ist es etwas, wo Du Dich einloggen musst, dann logge Dich als Benutzer ein.
                        - Loggst Du Dich aber als Root ein (nicht empfohlen) dann mache bei [3]weiter

                    [1] Gib am Prompt "su" ein, drücke die Eingabetaste. Es erscheint "Password:"

                    [2] Gib das Passwort des Superusers (also von root ein.) Es erscheint ein neues Prompt. Betrachte es und finde den Unterschied zum vorherigen.

                    [3] Gib "su wwwrun" ein. Der Superuser braucht dafür kein Passwort. Er ist Gott und kann beliebige Gestalt annehmen.

                    [x-z] Tu, was Du tun willst.

                    [z+1] Schließe das Fenster oder gib solange "exit" ein, bis Du wieder normaler Benutzer bist. Nicht, das da irgendwer böse Sachen macht wie /boot/vmlinuz zu löschen, Dein und des roots Passwort anzupassen etc.

                    Auf einem sinnvoll eingerichtetem System erkennst Du bereits am Prompt, ob Du root bist oder nicht...

                    MFFG (Mit freundlich- friedfertigem Grinsen)

                    fastix®

                    --
                    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                    1. Nunja, danke für diese doch interessante Unterweisung, aber mein Problem ist eigentlich, dass ich keine Sessions benutzen kann. Das ist aber unbedingt nötig. Die Datei session.so in dem Extensions-Verzeichnis +hat keine Zugriffsbeschränkungen mehr+ (chmod a+rwx ./session.so). Ich hoffe, das war der richtige Befehl.
                      Vielleicht ist diese Zeile im Errorlog von Apache interessanter:
                      "[Tue Aug 03 14:24:17 2004] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]"
                      Nochmal zur Erinnerung: Im Errorlog steht auch
                      "PHP Warning:  Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/session.so' - libmm.so.13: cannot open shared object file: No such file or directory in Unknown on line 0", was aber seltsam ist, da dieser Fehler ja bei den anderen Extensions nicht auftritt... Daher glaube ich nicht, dass es am Zugriff scheitert. Klingt logisch, oder? (Das ist eine ernstgemeinte Frage, wie gesagt, ich bin noch nicht ganz "into" Linux)
                      Wie auch immer, es wird schon irgendwann hinhaun. Danke für die Unterstützung :-)

                      Wiberg

                      1. Moin!

                        Nunja, danke für diese doch interessante Unterweisung,

                        Das ist sie gewiss. Du hast geschrieben, Du kennst Dich damit nicht aus. Und um zu testen, ob Dein Apache darf, was er soll, ist das der beste Weg...

                        Generell jetzt der Weg zur Lösung Deines Problems:

                        • Deinstalliere PHP und den Apache komplett
                        • Installiere Apache, PHP und alle Module, die Du benötigts, komplett (also in einem Installationsvorgang) neu. (Manche Module müssen schon da sein, wenn PHP kompiliert wird)
                              - benutze dazu den Yast und die Paketsuche
                              - Achte darauf, das alle Paketabhängigkeiten und Widersprüche "aufgelöst" sind.
                        • Benutze YOU um Deine System auf den neuesten Stand zu bringen.

                        Des weiteren kann ich Dir leider nur sagen, dass SuSE immer wieder Fehler macht. Und leider ist es so, dass die Versionsnummern bei SuSE keine Rückschlüsse zulassen. Es ist durchaus wahrscheinlich, dass in einer 9.1er mehr Fehler drin sind als in der Version 9.0. Der Grund hierfür liegt z.B. im neuen Kernel und beim neuen KDE. Die 9.0 ist eher die "reife" Versionsnummer der Reihe seit 8.0. Die Kritik an SuSE diesbezüglich kommt aus allen Ecken und sollte in Nürnberg nicht mehr überhört werden.

                        Das letzte "gute" SuSE war in meinen Augen 7.2...davor 6.4 - Deshalb hatte ich Dich auch auf Debian verwiesen. Das ist aufgrund längerer Reifezeit wesentlich weniger fehlerbehaftet und für einen Server braucht man nicht das neueste KDE, Gnome oder Office. Du solltest  wirklich darüber nachdenken.

                        Alternativ: Mit SuSE 9.0 ging das, was Du brauchst, noch absolut problemlos.

                        MFFG (Mit freundlich- friedfertigem Grinsen)

                        fastix®

                        --
                        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                        1. Nunja, also dann werde ich das mal alles neu installieren :-(
                          Leider ist die Installation von Sachen über FTP von SuSE mit YaST buggy :-) Aber das krieg ich schon hin! Auch wenn's nicht so cool ist, vielen Dank für deine Unterstützung.

                          Wiberg

                          PS: Aber ICH brauche neuestes KDE :-) und Office

                2. Achja, und was das Linux-Zeug angeht, ich bin eigentlich erst frisch der Windows-Welt entstiegen, dementsprechend überfordert mich der Umgang mit gewissen Dingen noch. Deshalb habe ich auch keine Ahnung, was an Debian besser ist als an SuSE oder andersrum. Jedenfalls bleib ich erstmal bei SuSE, der vorläufigen Einfachheit wegen.
                  Mein Unix-Freund, also der Typ, der von Linux bös' viel Ahnung und mir das alles gemacht hat, ist leider gerade im Urlaub, sonst würde ich das Forum nicht mit derlei Linux-Kram belästigen :-#