Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobieranie danych ze strumienia - naruszenie ochrony pamieci
Forum PHP.pl > Forum > PHP
Spooky2
Witam. Mam dosyc nietypowy problem. Nie potrafie stwierdzic, ze czego wynika.

Mam taki kodzik

  1. $strumien = ssh2_exec($konsola, $komenda);
  2. stream_set_blocking($strumien, true);
  3. $dane = "";
  4.  
  5. while($bufor = fgets($strumien))
  6. {
  7. $dane .= $bufor;
  8. }
  9.  
  10. fclose($strumien);
  11.  
  12. return $dane;
  13. }


Zasada dzialania jest taka - wykonuje polaczenie ssh2_connect do urzadzenia o danym adresie IP, wywoluje komende i zczytuje wynik jej dzialania. (jak zczytuje dane ze strumienia widac wyzej - wiem ze problem lezy tutaj)
Wszystko dzialalo do czasu (na starszej wersji softu w urzadzeniu). W nowej - nie dziala. Nie wiem czym to jest podytkowane, czy to jakis bug w tymze sofcie, czy moze powinienem zmodyfikowac swoj kod.
Co sie dzieje? Jesli wykonanie polecenia zwraca duza ilosc danych - kilkadziesiat linii - skrypt przerywa dzialanie i wyrzica blad "Naruszenie ochrony pamieci". Jesli zdam mu wykonanie polecenia ktore zwraca mniejsza liczbe wynikow (mniej linii) - dziala ok. Co o tym myslicie?
gac3k
Obstawiam ten problem z softem, bo PHP wszystko ogarnia ok, dostajesz tylko to co aplikacja wypluwa, w tym wypadku wyjątek, z resztą PHP nie wypluło by Ci takiego błędu, ani też nigdzie w kodzie takiego błędu nie definiujesz. Zwyczajnie zrób to samo w aplikacji, bez użycia PHP, jeśli wynik będzie ten sam, będziesz miał diagnozę.
Spooky2
Caly myk polega na tym, ze jak zaloguje sie przez ssh i wykonam ta komende - to jest ok :-) Wszystkie dane pojawia mi sie na ekranie - zadnego bledu. Tylko gdy korzystam z powyzszego kodu mam taki objaw.
Zyx
Kompilujesz PHP w trybie debugowym, robisz:

Kod
ulimit -c unlimited


Uruchamiasz skrypt, sprawdzasz w gdb dla pewności, gdzie problem występuje i wysyłasz utworzonego core dumpa twórcom rozszerzenia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.