PHP fopen ohne Fehlermeldung
mixmastertobsi
- php
- webserver
0 Auge0 mixmastertobsi0 Auge
Hallo,
wir sind zu einem neuen Server gewechselt, bei welchem eigentlich alles gleich ist, bis auf das Betriebssystem. Davor war Ubuntu 14.04 und nun sind wir auf 16.04.
Nun das Problem, denn eine PHP Funktion klappt nicht mehr und in den Logs steht auch nichts.
Mit fopen versuche ich eine Datei auf einen entfernten Server zu schreiben. Die SFTP Verbindung wird auch noch problemlos aufgebaut, doch leider wird die Datei nicht geschrieben. In den Logs finde ich nichts und auch in den Skript wird kein Error ausgegeben. Hat jemand eine Idee?
$sftp = ssh2_sftp($connection);
$resFile = fopen("ssh2.sftp://{$sftp}/data/edi/da30033222/in/test.xml", 'w');
Hallo
Hast du das Error-Reporting auf dem neuen Server aktiviert? Wie sehen die Einstellungen für den Zugriff auf entfernte Ressourcen in der php.ini aus?
Siehe dazu auch die PHP-Doku zu fopen
, Parameter filename
, Block „Hinweis“.
Tschö, Auge
Also es war ein BUG von PHP7.
https://stackoverflow.com/questions/40921520/php-7-ssh2-sftp-stat-bug-work-around
mit intval($sftp) geht es nun
Hallo
Also es war ein BUG von PHP7.
Wenn ich mich auf den Inahlt des von dir verlinkten Issues auf Stackoverflow verlasse, ist es eben kein BUG.
https://stackoverflow.com/questions/40921520/php-7-ssh2-sftp-stat-bug-work-around
Die Antwort zitiert und verweist auf diesen Blogeintrag zu einem Bug.
„PHP 5.6.28 (and apparently 7.0.13) introduced a security fix to URL parsing, that caused the string interpolation of the $sftp resource handle to no-longer be recognized as a valid URL. In turn, that causes opendir(), readdir(), etc. to fail when you use an $sftp resource in the path string, after an upgrade to one of those PHP versions.“
Es handelt sich also mitnichten um einen Bug, sondern um die Folge der Behebung eines Bugs. Die führte zu einer Verhaltensänderung, in die du nun hineingestolpert bist. Die Lösung hast du ja nun.
Tschö, Auge