Podczas generowania obrazu za pomocą PHP, na przykład dodawania znaku wodnego do obrazu przechowywanego na serwerze, przy użyciu poniższego kodu lub podobnego z obrazem JPEG zamiast PNG, obraz może nie być generowany i zgłaszać błąd, widoczny bezpośrednio w przeglądarce Firefox, ale nie w Chrome.
Ten rodzaj kodu, pomimo pracy na niektórych serwerach, może teraz działać na innych, czasem z niejasnych powodów. W moim przypadku działało idealnie dobrze lokalnie, ale wyprodukowane poniżej błędu na serwerze internetowym, obraz nie może być wyświetlany, ponieważ zawiera błędy.
Problem może wynikać z kilku powodów: oto niektóre z nich:
Dane wyjściowe zostały już wcześniej ustawione
Prawdziwy błąd generowania obrazu
Używany jest niewłaściwy typ obrazu
Biblioteka obrazów nie jest zainstalowana
Błąd Obraz nie może zostać wyświetlony, ponieważ zawiera błędy w Firefoksie
Nawet jeśli nie celowo, może być na przykład na przykład, że inne poprzednie skrypty zawierały spacje na końcu – aby uniknąć tego błędu, upewnij się, że, jak zaleca PHP, nie zamykaj skryptów z tagiem końcowym PHP ?>
Następnie, przed użyciem funkcji nagłówka, użyj następującego kodu, aby upewnić się, że poprzednio ustawiony nagłówek został odrzucony
foreach (getallheaders() as $name => $value) {
header_remove($name);
}
A także ta funkcja, aby upewnić się, że nie zostały wygenerowane żadne dane wyjściowe przed nagłówkiem i obrazem
ob_end_clean();
Rozwiązało to problem w moim przypadku, a obraz został poprawnie wyświetlony ponownie:
Dynamicznie generowany obraz za pomocą PHP
Prawdziwy błąd generowania obrazu
W przypadku wygenerowania prawdziwego błędu podczas generowania obrazu, upewnij się, że PHP jest ustawione na wyświetlanie wszystkich możliwych rodzajów błędów i sprawdź odpowiednie dzienniki, aby móc je wyśledzić i rozwiązać.
Poniższy kod sprawi, że PHP zgłosi wszystkie błędy w dzienniku:
Aby upewnić się, że biblioteki obrazów są zainstalowane. Aby to zrobić, uruchom funkcję phpinfo (); w skrypcie i sprawdź dane wyjściowe dla następującej wartości związanej z PHP GD, biblioteki graficznej używanej przez funkcje takie jak imagepng ();
W przypadku braku pakietów, sposób rozwiązania zależy od konfiguracji lokalnej, poprzez dodanie pakietu za pomocą poleceń PEAR lub za pomocą wbudowanego rozwiązania hosta internetowego do instalacji pakietu.
Szczegóły pakietu PHP GD za pomocą funkcji phpinfo ()