Uhfe: Problem mit der Konfiguration von PHP??

Hallo,

wir haben uns aus Performancegründen einen neuen Intranet-Server gegönnt. (Der Alte war doch schon recht betagt). Diesen haben wir neu aufgesetzt mit Suse Novell Enterprise Server 9 (Apache2).
Da dort nur php 4 enthalten war habe ich auf php5 upgedatet. Hat auch -mit ein wenig Aufwand- funktioniert.
Jetzt habe ich aber ein Problem mit Scripten, die auf dem alten Server einwandfrei laufen (Apache 1.3, php 4)

Beispiel:

if(isset($ldapuser))
{

...hier folgt dann eine Abfrage gegen LDAP. Die funzt.

}

else
{
?>
    </td></tr>
    <tr><td width="20">&nbsp;</td>
    <td colspan='3'>
    <h1>Bitte Authentifizieren sie sich mit Ihrer Windows Netzwerk Anmeldung!</h1>
    <form action='start.php' method='post'>
    Benutzer: <input type='text' name='ldapuser'><br>
    Passwort: <input type='password' name='pass'><br>
    <input type='submit' value='Und ab'>
    </form>
    </td></tr>
    </table>
<?
}

Soweit so klar? Wenn $ldapuser nicht existiert wird ein Formular angezeigt, wo ldapuser und pass gefüllt werden und per Submit wird das selbe Script wieder ausgeführt und der if-Zweig wird ausgeführt (bzw. sollte ausgeführt werden) Aber genau das tut er nicht. Es wird immer wieder das Formular angezeigt. Wenn ich vor der If-Abfrage $ldapuser und $pass fest vercode funktioniert es einwandfrei.

Habe ich in der PHP oder Apache Konfiguration noch einen Fehler?

Bin dankbar für zielführende Hinweise

Grüße

Uhfe

  1. Die Variable ldapuser sollte vorher über das $_POST-Array geholt werden:

    $ldapuser = $_POST["ldapuser"];

  2. Hallo Uhfe,

    Da dort nur php 4 enthalten war habe ich auf php5 upgedatet. Hat auch -mit ein wenig Aufwand- funktioniert.
    Jetzt habe ich aber ein Problem mit Scripten, die auf dem alten Server einwandfrei laufen (Apache 1.3, php 4)

    Soweit so klar? Wenn $ldapuser nicht existiert wird ein Formular angezeigt, wo ldapuser und pass gefüllt werden und per Submit wird das selbe Script wieder ausgeführt und der if-Zweig wird ausgeführt (bzw. sollte ausgeführt werden) Aber genau das tut er nicht. Es wird immer wieder das Formular angezeigt. Wenn ich vor der If-Abfrage $ldapuser und $pass fest vercode funktioniert es einwandfrei.

    Habe ich in der PHP oder Apache Konfiguration noch einen Fehler?

    Es liegt mit an Sicherheit grenzender Wahrscheinlichkeit daran, daß
    register_globals auf off gesetzt ist.

    Bis PHP 4x war register_globals standardmässig auf on.

    Du hast nun 2 Möglichkeiten:

    1. Alle Skripte umschreiben, damit sie auch unter register_globals off laufen.

    z.B.
    $ldapuser = $_REQUEST['ldapuser'];

    Bzw. anstelle von $_REQUEST $_GET bzw. $_POST.

    Und das für _alle_ per GET oder POST übergebenen Variablen in allen Skripten.

    1. In der php.ini (oder auch .htaccess) register_globals auf on stzen. Weniger empfehlenswert, aber als Interimslösung durchaus vertretbar.

    Grüsse
    Frankie

    1. Hallo Frankie,

      hmmh. Welche Vor- bzw. Nachteile hat denn die Tatsache, dass ich register_globals auf off lasse?

      Prinzipiell -habe gerade mal quergelesen- funktioniert es doch sicher, erst einmal register_globals auf on zu setzen und nach und nach die Scripte anzupassen, danach register_globals auf off.

      Ich glaube so mach ichs.

      Danke nochmal für deine Antwort

      Uhfe

      1. Hallo Uhfe,

        hmmh. Welche Vor- bzw. Nachteile hat denn die Tatsache, dass ich register_globals auf off lasse?

        Lese dazu das Posting vom Fichtl bzw. folge den dort angegebenen Links:
        https://forum.selfhtml.org/?t=106662&m=661331

        Prinzipiell -habe gerade mal quergelesen- funktioniert es doch sicher, erst einmal register_globals auf on zu setzen und nach und nach die Scripte anzupassen, danach register_globals auf off.
        Ich glaube so mach ichs.

        Genau so würde ich es auch machen ;-)

        Grüsse
        Frankie

        1. Ähhhh,

          ich noch mal.

          Wann bzw. wodurch wird denn die "neue" php.ini aktiviert?

          Ich habe in /etc/php.ini die Änderung gemacht (Bin auch brav der Warnung gefolgt auf Groß- und Kleinschreibung zu achten)

          Apache restartet.

          Problem besteht immer noch.

          Jetzt änder ich erst mal mein Test-Script.

          Wäre trotzdem für Antworten dankbar

          Uhfe

          1. Hallo Uhfe,

            Wann bzw. wodurch wird denn die "neue" php.ini aktiviert?

            Ich habe in /etc/php.ini die Änderung gemacht (Bin auch brav der Warnung gefolgt auf Groß- und Kleinschreibung zu achten)

            Apache restartet.

            Problem besteht immer noch.

            Keine Ahnung, vielleicht Rechner rebooten?

            Trage mal in deine .htacces im obersten Verzeichnis folgende Zeile ein (bzw. .htaccess mit dieser Zeile anlegen):

            php_flag register_globals on (ich gehe davon aus, daß Du das willst)

            Jetzt änder ich erst mal mein Test-Script.

            Das solltest Du sowieso tun ;-)

            Grüsse
            Frankie

            1. Boah Himmel,

              manchmal kann man so beschränkt sein....

              Wollte mir beim instn von php5 die Wege zurück offen halten und habe alle Pfade beim .configure abgeändert, so dass nur noch die httpd.conf geändert werden muss um wieder zurück zu php4 zu gehen.

              Dummerweise hab ich mir jetzt einen Wolf geändert in /etc/php.ini aber die relevante php.ini lag unter /etc/php5/

              Kein Wunder, dass selbst ein Reboot keine Änderung brachte...

              Naja. Dachte vielleicht wollt ihr euch ja an mir ein schlechtes Beispiel nehmen.

              Schönes Wochenende

              Uhfe

  3. Soweit so klar? Wenn $ldapuser nicht existiert wird ein Formular angezeigt, wo ldapuser und pass gefüllt werden und per Submit wird das selbe Script wieder ausgeführt und der if-Zweig wird ausgeführt (bzw. sollte ausgeführt werden) Aber genau das tut er nicht. Es wird immer wieder das Formular angezeigt. Wenn ich vor der If-Abfrage $ldapuser und $pass fest vercode funktioniert es einwandfrei.

    Habe ich in der PHP oder Apache Konfiguration noch einen Fehler?

    Hallo,

    liegt wahrscheinlich daran das bei dir register_globals nicht eingeschaltet ist:

    http://www.php.net/manual/en/security.globals.php

    register_globals ausschalten erhöht die Sicherheit der PHP-Scripte da man dann keine eigenen Variablen mehr einschmugeln kann. Deine Optionen: Auf Sicherheit verzichten und register_globals einschalten oder alle Scripte umstellen das sie auch ohne funktionieren.

    Außerdem sind PHP4 und 5 nicht ganz kompatibel, du wirst unter Umständen noch auf einige Fehler stoßen:

    http://www.zend.com/php5/migration.php

    Schöne Grüße

    --
    DerFichtl
    feichtinger.info