ServBay: Rozwiązywanie typowych problemów z PHP – ImageMagick i wolne przesyłanie dużych plików 
ServBay to wygodne lokalne środowisko do tworzenia aplikacji webowych, wspierające różne wersje PHP oraz liczne rozszerzenia. Chociaż ServBay stawia na stabilność i niezawodność, w praktyce mogą pojawić się sporadyczne problemy z usługą PHP lub konkretnymi modułami rozszerzeń.
Niniejszy artykuł pomoże Ci zdiagnozować i rozwiązać najczęstsze problemy związane z PHP w ServBay – skupiając się na błędzie ImageMagick oraz spowolnieniu przy przesyłaniu dużych plików – i przedstawi szczegółowe kroki oraz gotowe rozwiązania.
Najczęstsze problemy z PHP i ich rozwiązania 
Poniżej przedstawiamy najbardziej typowe problemy oraz rozwiązania związane z PHP i jego rozszerzeniami.
ImageMagick: błąd "number of supported formats: 0" 
Opis problemu:
Część użytkowników ServBay, korzystając z rozszerzenia PHP ImageMagick, może napotkać komunikat:
ImageMagick number of supported formats: 01
Oznacza to, że biblioteka ImageMagick nie wykryła lub nie załadowała obsługiwanych formatów grafik.

Rozwiązanie:
Problem zwykle dotyczy bibliotek bazowych dostarczanych przez ServBay Runtime. Postępuj zgodnie z poniższymi krokami:
- Uruchom aplikację ServBay.
- W menu po lewej wybierz Pakiety(Packages).
- Na liście pakietów po prawej znajdź i wybierz ServBay Runtime.
- Upewnij się, że ServBay Runtimejest zainstalowany i ma wersję co najmniej1.0.20lub1.1.20. Jeżeli Twoja wersja jest starsza, kliknij "Uaktualnij", aby zaktualizować pakiet do najnowszej wersji.
- Po aktualizacji ServBay Runtimezrestartuj używaną usługę PHP (np. PHP 8.1, PHP 8.2 itd.).
Wyjaśnienie: Pakiet ServBay Runtime dostarcza wewnętrzne komponenty i współdzielone biblioteki wymagane przez rozszerzenia PHP. Aktualizacja Runtime zapewnia najnowsze wersje bibliotek, co rozwiązuje problem ImageMagick z rozpoznawaniem formatów grafik.
Spowolnione przesyłanie dużych plików przez PHP 
Opis problemu:
Niektórzy użytkownicy, korzystający z aplikacji PHP (np. usług opartych o Tus-PHP, NextCloud itd.), podczas przesyłania plików powyżej 1 GB zauważają znaczące spowolnienie procesu.
Przyczyną problemu mogą być mechanizmy działania php-fpm oraz sposób obsługi transferu fragmentowanego plików (Chunked Transfer Encoding).
Rozwiązanie:
Aby zwiększyć szybkość przesyłania dużych plików, wypróbuj poniższe rozwiązania:
- Zwiększ liczbę - pm.max_childrenw php-fpm- W domyślnej konfiguracji ServBay, - pm.max_children(maksymalna liczba procesów potomnych) to zazwyczaj- 10. Przy obsłudze licznych równoległych żądań lub długotrwałych uploadów dużych plików, ta wartość może stanowić wąskie gardło.- Warto zwiększyć tę liczbę oraz sprawdzić ustawienie - pm(np.- pm = dynamiclub- pm = ondemand), tak aby odpowiadała ona wymaganiom projektów. - Kroki: - W menu po lewej stronie wybierz wersję PHP, z której korzystasz (np. PHP 8.2).
- Kliknij przycisk Configurationpo prawej.
- Znajdź i otwórz plik php-fpm.conf.
- Wyszukaj frazę pm.max_childreni zmień jej wartość.
- Zapisz plik i zrestartuj usługę PHP.
 - Wyjaśnienie: Wyższa liczba procesów potomnych pozwala php-fpm na jednoczesną obsługę większej liczby żądań. Przy przesyłaniu dużych plików, gdy proces może być długo zajęty, dodatkowe procesy zapobiegają "kolejkom" i poprawiają ogólną wydajność obsługi plików. 
- Wyłącz fragmentację plików (w kodzie aplikacji, niezalecane zmiany po stronie ServBay) - To rozwiązanie wymaga zmian w kodzie aplikacji i może wpłynąć na funkcje zależne od transferów fragmentowanych. Jednak w niektórych przypadkach wyłączenie lub zmiana obsługi fragmentacji (na poziomie klienta lub serwera) może zniwelować negatywną interakcję z php-fpm i poprawić prędkość przesyłania. 
- Sprawdź oraz zmodyfikuj parametr - fastcgi_request_bufferingna serwerze WWW (Nginx/Caddy)- Jeśli korzystasz z Nginx lub Caddy i przekazujesz żądania do php-fpm, parametr - fastcgi_request_bufferingdecyduje o sposobie przesyłania treści żądania.- Nginx: Domyślnie - fastcgi_request_buffering on;– Nginx pobiera cały plik od klienta, a następnie przekazuje go do php-fpm "hurtem". Przy dużych plikach powoduje to opóźnienie rozpoczęcia przetwarzania przez FPM. Ustawiając- fastcgi_request_buffering off;, Nginx zaczyna natychmiast streamować dane do FPM, co przyspiesza uploady.nginx- location ~ \.php$ { # ... inne parametry fastcgi ... fastcgi_request_buffering off; # Dodaj lub zmień tę linię # ... }1
 2
 3
 4
 5
- Caddy: Dyrektywa - php_fastcgidomyślnie działa jak- fastcgi_request_buffering off– treść żądania trafia do FPM na bieżąco. W typowej konfiguracji nie wymaga to zmian, jednak przy niestandardowym użyciu- reverse_proxywarto upewnić się, że nie ma innych mechanizmów buforujących po drodze.
 - Kroki: - W lewym menu ServBay wybierz używany serwer WWW (np. Nginx lub Caddy).
- Kliknij Configurationpo prawej stronie.
- Otwórz główny plik konfiguracyjny (nginx.conflubCaddyfile).
- W sekcji obsługującej żądania PHP (locationw Nginx, blokphp_fastcgiw Caddy), dodaj lub zmodyfikujfastcgi_request_buffering off;.
- Zapisz plik i zrestartuj serwer WWW.
 
Dodatkowe kontrole:
- Sprawdź konfigurację PHP (php.ini): Upewnij się, że wartościupload_max_filesize,post_max_sizeimemory_limitsą wystarczająco wysokie, aby obsłużyć zamierzony rozmiar plików. Złe ustawienia powodują głównie błąd uploadu, nie spowolnienie, ale warto to skontrolować.
- Analizuj logi: Sprawdź logi serwera WWW (Nginx/Caddy) – zarówno błędów jak i dostępu – oraz logi PHP-FPM. Logi dostarczają szczegółowe informacje o błędach lub nietypowych sytuacjach przy przetwarzaniu żądań. Ścieżkę do logu PHP znajdziesz w pliku php.ini(dyrektywaerror_log).
Ogólne wskazówki dotyczące rozwiązywania problemów z PHP 
Gdy napotykasz problemy z PHP w środowisku ServBay, stosuj poniższe uniwersalne kroki:
- Zweryfikuj wersję PHP oraz rozszerzenia: Sprawdź, czy aktualna wersja PHP jest zgodna z Twoją aplikacją oraz czy wymagane rozszerzenia (np. ImageMagick, GD, MySQLi itd.) są zainstalowane i włączone. Najprościej zrobić to uruchamiając skrypt z funkcją phpinfo()i przeglądając wynik w przeglądarce.
- Sprawdź status usług ServBay: Upewnij się, że zarówno wybrana usługa PHP (np. PHP 8.2), jak i serwer WWW (Nginx lub Caddy), oraz usługi bazodanowe (MySQL, PostgreSQL) poprawnie działają w ServBay.
- Przeanalizuj logi: To kluczowy etap diagnostyki. - Logi błędów PHP: Odnajdź plik, na który wskazuje dyrektywa error_logwphp.ini. W środowisku deweloperskim ustawdisplay_errorsnaOn(na produkcji – domyślnieOff) oraz upewnij się, żelog_errorsjest aktywne.
- Logi serwera WWW: Znajdziesz je zazwyczaj w folderze logsw katalogu instalacyjnym ServBay lub w lokalizacji wskazanej w konfiguracji serwera.
- Logi aplikacji ServBay: Sama aplikacja ServBay może również rejestrować krytyczne zdarzenia lub problemy z uruchomieniem.
 
- Logi błędów PHP: Odnajdź plik, na który wskazuje dyrektywa 
- Prostota środowiska testowego: Gdy to możliwe, spróbuj odtworzyć problem w jak najprostszych warunkach, np. na pojedynczym pliku PHP. Pomaga to wykluczyć niuanse kodu aplikacji.
- Sięgaj po dokumentację i społeczność: Oficjalna dokumentacja ServBay i wsparcie użytkowników to świetne źródła pomocy oraz rozwiązań znanych już problemów.
Podsumowanie 
W tym artykule przedstawiliśmy konkretne rozwiązania problemów z ImageMagick oraz spowolnionym przesyłaniem dużych plików w ServBay, a także uniwersalne porady przy rozwiązywaniu problemów z PHP. Sprawdzając wersję ServBay Runtime, zmieniając konfigurację php-fpm, modyfikując ustawienia buforowania serwera WWW i analizując logi, można usunąć większość problemów PHP w tym środowisku. Jeżeli problem nadal występuje, pamiętaj o szczegółowej analizie logów lub skorzystaj z pomocy społeczności.
