Ich kopierte eine bestehende und erfolgreich ausgeführte Website auf einen neuen Entwicklungsserver.Kann nicht ändern, PHP Session-Cookie-Name
Die Anmeldung auf dem neuen Server ist nun gebrochen, und ich verfolgte sie auf die Tatsache, dass, obwohl die Session-Cookie wird umbenannt ...
ini_set('session.name', 'DOMAIN1');
... hält der Browser die sesssion Cookie gespeichert als PHPSESSID.
Wenn ich die obige Zeile aus der Anwendung auf dem neuen Server entfernen, funktioniert die Anmeldung erneut. Aber das ist keine gute Lösung, weil eine andere Anwendung auch PHPSESSID unter diesem Namen verwendet.
Und ich würde lieber den Grund für das seltsame Verhalten finden, anstatt einen Workaround zu verwenden. Wenn ich es nicht repariere, könnte es mich woanders hinbeißen.
Vielleicht ist dies bereits genug Informationen für jemanden, der mir einen Hinweis gibt. Wenn nicht, welche Informationen wären nützlich?
Diese Maschine war ein sehr nackter und einfacher Ubuntu 8.04 Server, und ich installierte apache2, mysql und php5 mit aptitude. Ich aktualisierte auch Lokales und die Zeitzone.
Lösung:
ersetzt ich die Linie oben mit diesem Code aus der akzeptierten Antwort ...
if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
{
die('Unable to set sesssion scope');
}
... und die Login funktioniert jetzt auch auf den neuen Server.
Nein, ini_set() soll die INI-Datei nicht ändern: siehe http://php.net/ini_set Andernfalls wäre es eine große potentielle Sicherheitslücke. – mojuba
Ja sorry, nur Laufzeit :) – RobertPitt
Danke, nach stundenlanger Suche klappt es endlich. Ich habe den Legacy-Code durch die 4 Zeilen aus Ihrem Beispiel ersetzt und das hat es behoben! – mit