Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: imagejpeg() i dziwny błąd
Forum PHP.pl > Forum > PHP
Valantir
Witam, ostatnio na serwerze aktualizowałem php do wersji 5.4 i napotkałem na pewien błąd. Otóż podczas użycia funkcji imagejpeg() wyskakuje mi błąd:
Cytat
ErrorException: Warning: imagejpeg(): Invalid 2nd parameter, it must a filename or a stream in ...


Czy ktoś może spotkał się z tym już? W poprzednich wersjach chodziło ale musiałem na serwerze zaktualizować wersję php do nowszej i wtedy zaczęło się kaszanić... czekam na jakieś odpowiedzi:) z góry dziękuję
nospor
1) Z obiektówką to nie ma żadnego związku. Patrz gdzie piszesz. Przenosze
2) Blad ci chyba wyraźnie mówi co jest nie tak. Drugi parametr ma być nazwą pliku. Skoro u ciebie nie jest to nie jest błąd z imagejpeg a raczej ze zmienną, którą wkładasz do imagejpeg - tam wiec szukaj błędu
Valantir
Fakt, rzeczywiście pomyliłem dział... sorki.
Ale inną sprawą jest to, że na lokalnym serwerze mam tak samo wpisany kod i nie wypluwa błędu... Wszystko leci dobrze...
nospor
Czytać umiem.... zrozumiałem to już po pierwszym poście ze kiedyś ci działało a teraz nie działa.

A teraz ty czytaj ze zrozumieniem:
Błąd jest ze zmienną którą wkłądasz do image. Z jakiegoś powodu się ona psuje, zapewne z powodu innych ustawień serwera. Niestety wróżką nie jestem i bez kodu nie jestem w stanie nic więcej powiedzieć. Musisz więc łaskawie poszukać czemu ona się psuje.

Pomoże ci w tym ten temat, który wyjasnia banalne debugowanie kodu:
Temat: Jak poprawnie zada pytanie
Valantir
Wszystko zrozumiałem... spokojnie...

tutaj jest kod na którym wykrzacz się skrypt:

Kod
public function resize($file)
    {
        $new_width = 100;
        $new_height = 100;
        list($width, $height) = getimagesize($file);
        $canvas = imagecreatetruecolor($new_width, $new_height);
        switch($this->getExtension()) {
          case 'jpg':
            $org = imagecreatefromjpeg($file);
            break;
          case 'gif':
            $org = imagecreatefromgif($file);
            break;
          case 'png':
            $org = imagecreatefrompng($file);
            break;
        }
        imagecopyresampled($canvas, $org, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
        print_r($file);
        switch($this->getExtension()) {
          case 'jpg':
            imagejpeg($canvas, $file, 100);
            break;
          case 'gif':
            imagegif($canvas, $file);
            break;
          case 'png':
            imagepng($canvas, $file);
            break;
        }
    }


zaś to zawiera zmienna file:

Cytat
Symfony\Component\HttpFoundation\File\UploadedFile Object ( [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 4fb133bc5c0fa.jpg [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 13195 [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 [pathName:SplFileInfo:private] => /tmp/php3ymB5r [fileName:SplFileInfo:private] => php3ymB5r )
nospor
No i widać że $file to obiekt, a ma być nazwą pliku lub stream.

Przyszła mi do głowy jeszcze jedna myśl. Może w innej wersji ten obiekt jest rzutowany na string przy pomocy metody toString i dlatego gdzie indziej ci działa. No ale to dziwne, bo ty zaktualizowałeś php do 5.4 a tam takie rzeczy powiny raczej działać
Valantir
No mimo wszystko już funkcja nie zgłasza błędu ale teraz jakimś cudem nie zmienia rozmiaru obrazka...
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.