Der Zielhost ist bislang noch nicht genannt worden. Könntest du mal ein minimales Script publizieren, damit man das ggf. rekonstruieren kann?
[PHP5] Kann serverseitig nicht auf Webseiten zugreifen
Einklappen
X
-
Kommentar
-
Hi, hab scheinbar das Problem gefunden, nur die Lösung dazu nicht!
Es liegt an der Erstellung einer session mit session_start();
Ab IIS7 muss ja gesonderte Rechte vergeben werden.
In meinem Script, was ich über den Browser aufrufe, funktionieren die Session tadellos, allerdings wenn ich das script über den Server aufrufe, über eine Socket-verbindung, dann ist feierabend!
Was könnte das Problem sein?
Kommentar
-
Doch ist es!
Denn in dem Script was ich mit fsockopen aufrufe, in der klasse die dort inkludiert wird im construct ein session_start() gemacht. Wenn ich das auskommendiere funktioniert es.
Allerdings in dem Script wo das fsockopen() gemacht wird, wird die Klasse auch benutzt, dort geht das session_start() aber!
Ab IIS7 werden Session ja gesondert pro Account bzw. Indentiät gespeichert. Allerdings hab ich alle Tuts im Netz die eine Lösung dafür haben probiert und es geht trotzdem nicht.
Kommentar
-
Kann mir Keiner hier helfen?
Hier mal ein Skript zum Testen, was zeigt was nicht bei mir geht! Geht es bei euch???
Er kann irgendwie ein vorhandene Session nicht lesen!
Code:<?php // Url zu diesem Skript $strUrl = 'http://localhost/test.php'; // Session wird gestartet session_start(); // Bei Erfolg sollte diese Ausgabe kommen if (isset($_GET['get'])) { die('<h1>ES GEHT !!!</h1>'); } // Das externe Laden dieser Seite starten if (isset($_GET['start'])) { echo file_get_contents($strUrl.'?get=true&'.session_name().'='.session_id()); } // Der Link zum Test echo '<a href="'.$strUrl.'?start=true&'.session_name().'='.session_id().'">Zum Test hier klicken...</a>'; ?>
Kommentar
-
Also es scheint nicht möglich zu sein, ein Skript über file_get_contents(), fsockopen oder cUrl zu öffnen, wenn man eine vorhandene Session an das Skript mit übergibt!
Allerdings funktioniert der Aufruf mit gleicher URL und Parametern über den Browser ohne Probleme, nur via Script und den Funktionen nicht!
Das obrige Script zeigt das Problem! Es kommt ein HTTP Request failed!
Wenn man aber das session_start() weglässt, oder das Script ohne Übergabe der Session-ID aufruft, tritt der Fehler nicht auf!
Egal ob unter IIS oder Apache (XAMPP).
Kommentar
-
Original geschrieben von TriphunEM
Kann mir Keiner hier helfen?
Hier mal ein Skript zum Testen, was zeigt was nicht bei mir geht! Geht es bei euch???
Er kann irgendwie ein vorhandene Session nicht lesen!
Code:<?php // Url zu diesem Skript $strUrl = 'http://localhost/test.php'; // Session wird gestartet session_start(); // Bei Erfolg sollte diese Ausgabe kommen if (isset($_GET['get'])) { die('<h1>ES GEHT !!!</h1>'); } // Das externe Laden dieser Seite starten if (isset($_GET['start'])) { echo file_get_contents($strUrl.'?get=true&'.session_name().'='.session_id()); } // Der Link zum Test echo '<a href="'.$strUrl.'?start=true&'.session_name().'='.session_id().'">Zum Test hier klicken...</a>'; ?>
dein // Das externe Laden dieser Seite starten ruft sich solange selber wieder auf, bis dein xampp dir irgendwann einen vogel zeigt
EDIT:
ich sollte mir angewöhnen wieder den ganzen thread zu lesen . tut es tatsächlich nur, wenn session_start(); drin bleibt
Kommentar
-
Nein!
PHP-Code:die('<h1>ES GEHT !!!</h1>');
Also nix mit endlose Selbstaufrufe!
Schau dir auch die Parameter an, da wirst du sehen, das du falsch liegst!
Wie gesagt, das ist nur ein Test-Code...mein richtiger Code macht sowas nicht, und da gehts auch nicht.
Mich würd mal interessieren was der "Wasaga" dazu meint, der hat doch für alles immer eine Auskunft parat!Zuletzt geändert von TriphunEM; 30.03.2009, 16:01.
Kommentar
-
Bei File-Based-Sessions tritt noch ein anderes Problem zutage:
Es wird ein exklusiver Lock auf das Session-File bei session_start() gelegt, was so lange wirkt, bis das Skript terminiert. Dann wird ein Skript aufgerufen, was auch wiederum ein session_start() aufruft und dort auf die Freigabe des Locks wartet und wartet und wartet und wartet. Dann irgendwann terminiert das Skript, der fsockopen-Aufruf schlägt fehl, und auch der erste Aufruf terminiert.
Der gesamte Ansatz ist hier wohl etwas wenig durchdacht.
session_write_close()
vor fsockopen hilft.
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
Kommentar