Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> php 5.4 fsockopen nie działa
Mlodycompany
post 30.09.2012, 17:18:29
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Zaktualizowałem php do wersji 5.4 i zauważyłem, że nie wszystko działa. Na razie napotkałem się na problemy z fsockopen. Nie działa. Nie wiem dlaczego, gdyż nie zwraca błędu, nawet z
  1. ini_set("display_errors", 1);


Wie ktoś co może być nie tak?
Go to the top of the page
+Quote Post
Crozin
post 30.09.2012, 17:22:33
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Według manuala, fsockopen wrzuca błąd wyłącznie w przypadku podania błędnego hosta. Cała reszta błędów jest dostępna spod $errstr - patrz manual.
Go to the top of the page
+Quote Post
Mlodycompany
post 30.09.2012, 17:30:54
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


zgadza się, ale wydaje mi się ze fsockopen zwraca error'a a nie warning'a czy cos innego. Po czym wnoszę? Otóż mając kod
  1. fsockopen(...);
  2. echo 1;

nic się nie wyświetla, natomiast gdy zakomentuję linię z fsockopen na ekranie pokazuje się 1
Go to the top of the page
+Quote Post
Crozin
post 30.09.2012, 17:42:48
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Popatrz w manualu jak wygląda poprawna obsługa błędów z fsockopen i zastosuj ją.

PS. Dla display_errors powinieneś przekazać wartość "on", a dla error_reporting -1 zamiast E_ALL.
Go to the top of the page
+Quote Post
Mlodycompany
post 30.09.2012, 17:51:06
Post #5





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


  1. ini_set("display_errors", "On");
  2. echo(true) ? "true" : "false";
  3. fsockopen("wp.pl",80, &$errno, &$errstr, 5);
  4. echo $errstr;


W przeglądarce 0 błedu, 0 nic, kompletnie. W konsoli jak odpaliłem to
Kod
PHP Fatal error:  Call-time pass-by-reference has been removed in...


@edit

Problem po części rozwiązany.
Kod
Note:  There is no reference sign on a function call - only on function definitions. Function definitions alone are enough to correctly pass the argument by reference. As of PHP 5.3.0, you will get a warning saying that "call-time pass-by-reference" is deprecated when you use & in foo(&$a);. And as of PHP 5.4.0, call-time pass-by-reference was removed, so using it will raise a fatal error.


Tylko dlaczego błąd dopiero zobaczyłem w konsoli a nie w przeglądarce? Wiecie coś w tym temacie?

Ten post edytował Mlodycompany 30.09.2012, 17:56:10
Go to the top of the page
+Quote Post
Crozin
post 30.09.2012, 17:55:49
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A po co dodałeś "&" przed zmiennymi? Referencja jest zdefiniowana w sygnaturze funkcji.
Go to the top of the page
+Quote Post
Mlodycompany
post 30.09.2012, 17:58:26
Post #7





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Cytat(Crozin @ 30.09.2012, 18:55:49 ) *
A po co dodałeś "&" przed zmiennymi? Referencja jest zdefiniowana w sygnaturze funkcji.


Wiesz co, w 5.3 działało więc to zostawiłem. Nie do końca jeszcze kumam wskaźniki w php...
Go to the top of the page
+Quote Post
Crozin
post 30.09.2012, 18:02:36
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W PHP nie masz dostępu do wskaźników - ta składnia oznacza referencję.

Lektura obowiązkowa: http://php.net/manual/en/language.references.php
Go to the top of the page
+Quote Post
Mlodycompany
post 30.09.2012, 18:05:05
Post #9





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No ta, pomyliło mi się, referencje miały być. Ok. Dlaczego mi te błędy się nie wyświetlają?
Go to the top of the page
+Quote Post
Crozin
post 30.09.2012, 18:30:09
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W PHP większość kodu (szczególnie tego starego) jest napisana w stylu C, tj. funkcja przy niepowodzeniu zwraca false. Innymi słowy powinieneś sprawdzić czy ini_set wykonało się poprawinie.

PS. echo nie zwraca żadnej wartości, dlatego też nie powinieneś go używać w operatorze trójargumentowym.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:19