Przeniosłeś stronę na nowy serwer, chcesz zaktualizować Joomla 3.7 i nagle pojawia się pytanie: jaka wersja PHP będzie bezpieczna? Warto to dobrze ustawić, bo od wersji PHP zależy nie tylko stabilność, ale też bezpieczeństwo całej witryny. Z tego tekstu dowiesz się, jak dobrać PHP do Joomla 3.7, jak rozwiązać typowe błędy oraz co sprawdzić na hostingu.
Jakie wersje PHP współpracują z Joomla 3.7?
Joomla 3.7 była projektowana w czasie, gdy na serwerach dominowały PHP 5.6 i wchodzące wtedy PHP 7.0. Dlatego ta wersja CMS radzi sobie dobrze zarówno z PHP 5.6, jak i z PHP 7.0, a w większości przypadków także z PHP 7.1. Im nowsze PHP, tym zwykle lepsza wydajność i bezpieczeństwo, ale zbyt nowa wersja potrafi „złamać” stare rozszerzenia.
Przy Joomla 3.7 problemem jest często nie sama wersja systemu, tylko dodatki: komponenty, moduły i pluginy pisane wiele lat temu. One potrafią wywołać błędy na PHP 7.2, 7.3 czy 7.4, bo korzystają z funkcji, które zostały usunięte lub oznaczone jako przestarzałe. Widać to w praktyce na przykładzie migracji z Joomla do WordPressa przy użyciu FG Joomla to WordPress – nowsze PHP uwidacznia błędy w logach, których na starszej wersji nie było.
Bezpieczne minimum dla Joomla 3.7
Dla wielu stron opartych na Joomla 3.7 bezpiecznym punktem wyjścia jest PHP 7.0. Daje wyraźnie lepszą wydajność niż PHP 5.6, a jednocześnie rzadziej „gryzie się” ze starszymi rozszerzeniami niż 7.2 czy 7.3. W wielu wątkach użytkownicy, którzy mieli kłopot z aktualizacją, testowo schodzili z PHP 7 na PHP 5.6 i wtedy proces przechodził bez błędów.
Jeśli Twoja strona korzysta z rozbudowanych komponentów takich jak K2, VirtueMart, JoomFish, EasyBlog czy JComments, dobrze jest zacząć właśnie od PHP 7.0 lub 5.6. Potem możesz podnieść wersję stopniowo i sprawdzać, czy nic się nie sypie. W ten sposób łatwo uchwycić moment, w którym konkretna wtyczka przestaje działać poprawnie.
Czego unikać przy Joomla 3.7?
Wiele współczesnych hostingów domyślnie proponuje PHP 8.0 lub nawet 8.1. Dla Joomla 3.7 to często zbyt ambitne ustawienie. Taki zestaw prowadzi do błędów 500, białych ekranów lub ostrzeżeń w logach, bo starszy kod nie rozumie nowych zasad typowania i wyjątków. Zdarza się, że sama Joomla jeszcze jakoś działa, ale konkretne pluginy całkowicie odmawiają posłuszeństwa.
Trzeba też uważać na drobne różnice między PHP 7.0 a 7.1 czy 7.2. Na części hostingów Joomla 3.7 działa poprawnie na 7.1, ale ten sam zestaw rozszerzeń na 7.2 generuje już ostrzeżenia w logach, a czasem blokuje aktualizacje. Dlatego jeśli na danej wersji PHP widzisz błędy podczas aktualizacji, pierwszym krokiem jest zmiana PHP na niższe i powtórzenie całej operacji.
Najczęściej stabilnym kompromisem dla Joomla 3.7 jest PHP 7.0 – nowsze niż 5.6, a jednocześnie przyjazne dla starego kodu i rozszerzeń.
Jak ustawić PHP pod Joomla 3.7 na hostingu?
Na wielu serwerach – w tym popularnych kontach współdzielonych – wybór wersji PHP odbywa się w panelu klienta. Przykłady to cPanel, DirectAdmin czy autorskie panele, jak na serwerach linuxpl.com. To właśnie na takim hostingu pojawia się często pytanie „z jakiej wersji PHP korzystasz dla domeny?” gdy coś nie działa przy aktualizacji Joomla.
Dobrym podejściem jest utworzenie osobnego ustawienia PHP dla danej domeny lub subdomeny. Strona produkcyjna korzysta wtedy z jednego PHP, a kopia testowa z innego. Możesz w ten sposób bezpiecznie sprawdzić, jak Joomla 3.7 zachowuje się na 7.0 czy 7.1, zanim dotkniesz wersji działającej dla odwiedzających.
Jak sprawdzić aktualną wersję PHP?
Zanim zaczniesz zmieniać ustawienia, sprawdź, na jakiej wersji PHP strona pracuje teraz. Możesz to zrobić z poziomu panelu hostingu albo przez prosty plik phpinfo.php. Część administratorów woli krótki skrypt, który od razu pokaże ścieżki na serwerze i wersję interpreteratora.
Przy problemach takich jak błąd „ERROR: AJAX Loading Error: Forbidden” podczas aktualizacji Joomla 3.7 informacja o aktualnym PHP bywa bardzo istotna. Gdy aktualizacja kończy się błędem, a dodatki aktualizują się poprawnie, winny bywa nie tylko sam interpreter, ale też konfiguracja katalogów tymczasowych i uprawnień do zapisu.
Zmiana wersji PHP na serwerze
Gdy już wiesz, na jakim PHP chodzi Twoja domena, pora zmienić wersję na tę, która najlepiej współpracuje z Joomla 3.7. Na większości hostingów cały proces sprowadza się do wybrania odpowiedniej pozycji z listy. Ważne, żeby zrobić to osobno dla domeny, na której stoi Joomla, a nie globalnie dla całego konta.
Po zmianie PHP koniecznie sprawdź logi błędów. Jeśli strona zaczyna generować nowe ostrzeżenia, a wcześniej działała stabilnie, to znak, że któreś rozszerzenie nie radzi sobie z nową wersją. W takiej sytuacji lepiej wrócić do poprzedniej wersji PHP i zaplanować aktualizację rozszerzeń lub samej Joomli do bardziej aktualnej gałęzi.
Jak brak katalogu tymczasowego PHP wpływa na aktualizację Joomla?
W wielu wątkach na forach Joomla pojawia się komunikat „Brak katalogu tymczasowego PHP”. Pojawia się on w Ostrzeżeniach w zapleczu i zwykle towarzyszy mu problem z aktualizacją systemu do wersji 3.7 lub wyższej. Strona przeniesiona z localhosta na serwer często działa w takim stanie poprawnie, ale aktualizacja kończy się błędem AJAX.
Aktualizacja Joomla wymaga sprawnego katalogu tymczasowego. Pliki najpierw trafiają do katalogu tymczasowego PHP, potem do katalogu tmp Joomla, a dopiero później są rozpakowywane i instalowane. Jeśli któryś z tych kroków się nie powiedzie, system zgłasza błąd i aktualizacja zatrzymuje się w połowie procesu.
Jak sprawdzić katalog tymczasowy PHP?
Dobrym punktem wyjścia jest sprawdzenie, co zwraca funkcja sys_get_temp_dir(). Na wielu hostingach wynik to po prostu „/tmp”. To katalog systemowy, do którego PHP zapisuje pliki tymczasowe. Gdy Joomla zgłasza, że katalogu tymczasowego brakuje, warto sprawdzić, czy faktycznie istnieje oraz czy masz w nim prawo zapisu.
Jeśli masz dostęp do pliku php.ini lub do opcji niestandardowej konfiguracji PHP w panelu, możesz nadpisać parametr upload_tmp_dir. Wystarczy wskazać katalog, do którego Twoje konto ma pełne prawa zapisu i który realnie istnieje w strukturze serwera. Taka zmiana często rozwiązuje problem bez ruszania pozostałych ustawień.
Przy diagnozie ścieżek na nowym hostingu przydatny bywa prosty skrypt, który zwróci rzeczywisty DOCUMENT_ROOT. Możesz wtedy porównać go z tym, co wpisane jest w configuration.php. Jeśli wartości się różnią, Joomla patrzy w nie ten katalog, co serwer:
- utwórz plik info.php w katalogu głównym strony,
- wklej do niego kod z echo $_SERVER[’DOCUMENT_ROOT’],
- wywołaj plik przez przeglądarkę,
- porównaj wynik z ustawieniami $tmp_path i $log_path w configuration.php.
Ścieżki tmp_path i log_path w Joomla
W pliku configuration.php Joomla korzysta z parametrów $tmp_path i $log_path. To muszą być ścieżki absolutne, zgodne z tym, co rzeczywiście obowiązuje na nowym hostingu. Po przeniesieniu strony ze starego serwera często zostają tam stare wartości. Wtedy Joomla próbuje korzystać z katalogu, który na nowej maszynie w ogóle nie istnieje.
Najprostszy sposób na ustalenie prawidłowych ścieżek proponują doświadczeni administratorzy: zainstaluj na tym samym hostingu czystą Joomlę i podejrzyj, jakie wartości ma w configuration.php. Potem przepisz je do pliku konfiguracji Twojej przeniesionej witryny. Różnica w dokument root między starym i nowym hostingiem bywa tu decydująca.
Jeśli $_SERVER[’DOCUMENT_ROOT’] wskazuje inny katalog niż ścieżki w $tmp_path i $log_path, aktualizacja Joomla 3.7 ma dużą szansę zakończyć się błędem, nawet przy poprawnej wersji PHP.
Jak rozwiązać błąd „ERROR: AJAX Loading Error: Forbidden” przy aktualizacji?
Komunikat „ERROR: AJAX Loading Error: Forbidden” przy próbie aktualizacji z Joomla 3.6.5 do 3.7 lub z 3.7 do 3.7.2 pojawia się szczególnie często po przeniesieniu strony na nowy hosting. Wspomniany błąd zobaczył m.in. użytkownik, który wrzucił witrynę z localhosta na serwer linuxpl.com. Rozszerzenia aktualizowały się prawidłowo, ale sama Joomla już nie.
Taki błąd zwykle nie wynika wyłącznie z wersji PHP. W grę wchodzą też uprawnienia, blokady na serwerze oraz źle ustawione katalogi tymczasowe. Zdarza się, że dodatki przechodzą aktualizację, bo są mniejsze i korzystają z innych metod pobierania paczek, a trzon Joomli wymaga poprawnie działającego katalogu tmp i nieblokowanego żądania AJAX w panelu.
Co sprawdzić krok po kroku?
Żeby wyjść z błędu AJAX, warto przejść po kolei przez kilka punktów. Dzięki temu łatwiej wyłapać, czy winny jest PHP, czy raczej konfiguracja serwera albo pozostałości po starym hostingu w pliku configuration.php:
- sprawdź wersję PHP przypisaną do domeny,
- przetestuj aktualizację na PHP 7.0 i ewentualnie 5.6,
- zweryfikuj ścieżki $tmp_path i $log_path,
- skontroluj wynik sys_get_temp_dir() i istnienie katalogu,
- upewnij się, że katalog tymczasowy ma prawa zapisu,
- sprawdź log błędów serwera oraz log Joomla podczas próby aktualizacji.
Jeśli po tych krokach błąd się utrzymuje, dobrym rozwiązaniem bywa ręczna aktualizacja przez wgranie paczki aktualizacyjnej i wskazanie jej w menedżerze aktualizacji z opcji „Prześlij plik aktualizacji”. Czasem właśnie taka metoda „omija” ograniczenia, które blokują pobieranie paczki bezpośrednio z serwera Joomla.org.
Jak wersja PHP wpływa na rozszerzenia i migracje?
W przypadku Joomla 3.7 zarządzanie PHP to nie tylko sam CMS. Duże znaczenie mają także komponenty zewnętrzne. Przykładem jest wspomniana w źródłach wtyczka FG Joomla to WordPress, która służy do migracji treści do WordPressa. Jedna z użytkowniczek opisywała, jak po aktualizacji do najnowszej wersji pluginu, na nowszym PHP, zniknęła obsługa aliasów autorów – funkcji, której najbardziej potrzebowała.
Sytuację dodatkowo komplikowała obsługa wsparcia. E-maile wysyłane do pomocy technicznej dochodziły, ale dostawca poczty Comcast/Xfinity je odrzucał bez widocznych powiadomień. Dopiero zmiana adresu odpowiedzi po stronie twórcy wtyczki sprawiła, że klientka dostała wszystkie wcześniejsze odpowiedzi w formie PDF. To dobry przykład, jak kilka drobnych elementów na raz – wersja PHP, wtyczka migracyjna, filtracja poczty – składa się na cały łańcuch problemów.
Jeśli używasz płatnych rozszerzeń, takich jak FG Joomla to WordPress, VirtueMart czy integracje z K2, warto regularnie sprawdzać, do jakich wersji PHP są one deklarowane jako zgodne. Deweloperzy nie zawsze wysyłają powiadomienia o aktualizacjach, a licencje często obejmują dożywotnią licencję na produkt, ale tylko 3 miesiące aktualizacji. To oznacza, że aktualizacja PHP na serwerze po kilku miesiącach może wywołać błędy, jeśli wcześniej nie zaktualizowałeś rozszerzeń.
Przy większych migracjach opartych na wielu komponentach szczególnie przydaje się mała tabelka porównująca, które PHP jest najbardziej „bezpieczne” dla pojedynczej części systemu:
| Element | Zalecane PHP | Potencjalne problemy |
| Joomla 3.7 (rdzeń) | 7.0–7.1 | Na 7.3+ częstsze ostrzeżenia i niekompatybilne rozszerzenia |
| Starsze komponenty (K2, JoomFish, JComments) | 5.6–7.0 | Na 7.2+ możliwe błędy funkcji i przestarzałe wywołania |
| Nowe wtyczki migracyjne (np. FG Joomla to WP) | 7.0–7.4 | Na 5.6 brak wsparcia, na 8.0 jeszcze niepełna zgodność |
Taka prosta tabela pomaga zobaczyć, dlaczego jedna wersja PHP rzadko będzie idealna dla wszystkiego. Czasem trzeba pójść na kompromis albo wydzielić osobne środowisko testowe z inną wersją PHP do migracji i aktualizacji, a dopiero potem przenosić wynik na produkcję.
W codziennej pracy z Joomla 3.7 najwięcej problemów rodzi połączenie trzech elementów: starej wersji Joomla, bardzo nowego PHP i zasiedziałych komponentów, które nie były aktualizowane latami. Gdy dodasz do tego przenosiny na nowy hosting, błędne ścieżki $tmp_path oraz brak katalogu tymczasowego PHP, nawet prosta aktualizacja do 3.7.2 potrafi zamienić się w serię komunikatów o błędach. Dobrze dobrana wersja PHP, poprawnie ustawione ścieżki i kontrola nad rozszerzeniami zmniejszają to ryzyko do minimum.
FAQ – najczęściej zadawane pytania
Jakie wersje PHP są zalecane dla Joomla 3.7?
Joomla 3.7 dobrze radzi sobie z PHP 5.6, PHP 7.0, a w większości przypadków także z PHP 7.1. Bezpiecznym i najczęściej stabilnym kompromisem dla tej wersji CMS jest PHP 7.0, które oferuje lepszą wydajność niż PHP 5.6 i jest bardziej przyjazne dla starego kodu i rozszerzeń niż nowsze wersje.
Jakich wersji PHP należy unikać przy Joomla 3.7?
Należy unikać PHP 8.0 lub nawet 8.1, ponieważ są to zbyt ambitne ustawienia dla Joomla 3.7, często prowadzące do błędów 500, białych ekranów lub ostrzeżeń w logach. Warto również zachować ostrożność przy PHP 7.2 i nowszych, gdyż mogą generować ostrzeżenia lub blokować aktualizacje dla niektórych rozszerzeń.
Jak sprawdzić aktualną wersję PHP mojej strony Joomla 3.7?
Aktualną wersję PHP możesz sprawdzić z poziomu panelu hostingu (np. cPanel, DirectAdmin) lub tworząc prosty plik phpinfo.php w katalogu głównym strony, który pokaże wersję interpreteratora i inne informacje.
Dlaczego pojawia się komunikat „Brak katalogu tymczasowego PHP” i jak to naprawić?
Komunikat „Brak katalogu tymczasowego PHP” pojawia się w Ostrzeżeniach w zapleczu Joomla i często towarzyszy problemom z aktualizacją systemu. Aby to naprawić, należy sprawdzić, co zwraca funkcja sys_get_temp_dir() (często „/tmp”) i upewnić się, że masz prawo zapisu w tym katalogu. Można również nadpisać parametr upload_tmp_dir w php.ini, wskazując istniejący katalog, do którego konto hostingowe ma pełne prawa zapisu.
Jakie są kroki do rozwiązania błędu „ERROR: AJAX Loading Error: Forbidden” podczas aktualizacji Joomla 3.7?
Aby rozwiązać ten błąd, należy: sprawdzić wersję PHP (testując PHP 7.0 i ewentualnie 5.6), zweryfikować absolutne ścieżki $tmp_path i $log_path w pliku configuration.php, skontrolować wynik sys_get_temp_dir() i istnienie katalogu tymczasowego PHP, upewnić się, że katalog tymczasowy ma prawa zapisu oraz sprawdzić logi błędów serwera i Joomla. Jeśli problem nadal występuje, można spróbować ręcznej aktualizacji przez wgranie paczki aktualizacyjnej i wskazanie jej w menedżerze aktualizacji z opcji „Prześlij plik aktualizacji”.
Jak wersja PHP wpływa na działanie rozszerzeń w Joomla 3.7?
Starsze rozszerzenia (komponenty, moduły, pluginy) pisane wiele lat temu mogą wywoływać błędy na nowszych wersjach PHP (np. 7.2, 7.3, 7.4), ponieważ korzystają z funkcji, które zostały usunięte lub oznaczone jako przestarzałe. Dla starszych komponentów, takich jak K2, JoomFish czy JComments, wersje PHP 5.6–7.0 są zazwyczaj bezpieczniejsze.