Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obsługa błędów
Forum PHP.pl > Forum > Przedszkole
d0m1n1k_
Witam,
wiem, że temat wałkowany (choć wyszukiwarka na forum nie wyświetla żadnych tematów) ale poszukuję rozwiązania, jak ominąć błędy w moim skrypcie.
Pisząc precyzyjnie, kod (Linie od 34 do 42):

  1. function save_image($inPath,$outPath){
  2. $in = fopen($inPath, "rb");
  3. $out = fopen($outPath, "wb");
  4. while($chunk = fread($in,8192)){
  5. fwrite($out, $chunk, 8192);
  6. }
  7. fclose($in);
  8. fclose($out);
  9. }


raz na jakiś czas wywala errora:

  1. Warning: fopen(http://images.domena.com/website/data/pix/20150925/33300325_10X.JPG) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\WebServ\httpd\execution\saa_addPictures.php on line 38
  2.  
  3. Warning: fread() expects parameter 1 to be resource, boolean given in C:\WebServ\httpd\execution\saa_addPictures.php on line 40
  4.  
  5. Warning: fclose() expects parameter 1 to be resource, boolean given in C:\WebServ\httpd\execution\saa_addPictures.php on line 43
  6.  
  7. Warning: unpack() [function.unpack]: Type c: not enough input, need 1, have 0 in C:\WebServ\httpd\execution\wlib\vendor\de77\TGA.php on line 93
  8.  
  9. Fatal error: Uncaught exception 'WideImage_InvalidImageSourceException' with message 'File 'images_post/41/be1352bda6b9d630d35a68dc54cdf2e0.jpg' appears to be an invalid image source.' in C:\WebServ\httpd\execution\wlib\WideImage.php:226 Stack trace: #0 [internal function]: WideImage::loadFromFile('images_post/41/...') #1 C:\WebServ\httpd\execution\wlib\WideImage.php(184): call_user_func(Array, 'images_post/41/...') #2 C:\WebServ\httpd\execution\saa_addPictures.php(204): WideImage::load('images_post/41/...') #3 {main} thrown in C:\WebServ\httpd\execution\wlib\WideImage.php on line 226


204 Linijka:
  1. $add_new_file = mysql_query("INSERT INTO `photos`(`ph_id`, `ph_user`, `ph_v`, `ph_cate`, `ph_imag`, `ph_fold`, `ph_data`) VALUES (NULL, NULL, '$id', '$cat_gogo', '" . $name . "', '$catnbr', NOW())");
(gdzie $name = nazwa pliku graficznego)

I zastanawia mnie, co mogę zrobić aby nie zatrzymywało mi kodu, albo przynajmniej z automatu odświeżało mi go, aby zaczynał od początku?
W którym miejscu dodać przykładowo linijkę:
  1. echo "<meta http-equiv=\"refresh\" content=\"10\">";


Z góry dziękuję za pomoc
I korzystając z okazji życzę wszystkim Forumowiczom spokojnych, wesołych i radosnych świat!
Wazniak96
Czytaj ze zrozumieniem błędy. Jak byk pisze, że nie może znaleźć pliku funkcja fopen i stąd reszta błędów. A co zwraca funkcja fopen gdy nie znajdzie pliku? A no zwraca false czyli nawet nie spojrzałes w manuala. wink.gif
  1. if(!$in || !$out)
  2. //Przekierowanie
d0m1n1k_
Na chwilę obecną zrobiłem to w poniższy sposób i - po ostatnich 3h pracy - na chwilę obecną działa.

  1. function save_image($inPath,$outPath){
  2. $in = fopen($inPath, "rb");
  3. $out = fopen($outPath, "wb");
  4. if(!$in || !$out){
  5. $out = "NIE_OBSLUGUJE_PLIKU";
  6. }else{
  7. while($chunk = fread($in,8192)){
  8. fwrite($out, $chunk, 8192);
  9. }
  10. }
  11. fclose($in);
  12. fclose($out);
  13. }
  14.  
  15. if (is_array($obrazy) || is_object($obrazy)){
  16. foreach($obrazy as $imxg){
  17. $name = md5(date('YmdHis') . md5(md5(rand(1,99)))) . ".jpg";
  18. $check_si = $fold . $name;
  19. save_image($imxg,$check_si);
  20. if($check_si == "NIE_OBSLUGUJE_PLIKU"){
  21. echo "<br /><font color=\"red\">Error z plikami graficznymi</font><br />";
  22. }else{
  23. $black = "000000";
  24. $image = WideImage::load("" . $fold.$name . "");
  25. $resize1 = $image->resize(800, 600);
  26. $resize2 = $resize1->resizeCanvas('800', '600', 'center', 'center', $black);
  27. $resize2->saveToFile("" . $fold.$name . "", 80);
  28.  
  29. $add_new_file = mysql_query("//********MySQL********//");
  30. }
  31. }
  32. }


Prosiłbym o recenzję czy takie rozwiązanie jest poprawne.
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.