Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Administracja serwerem i bezpieczeństwo PHP

Którym poleceniem języka PHP można wyświetlić wartość pojedynczej dyrektywy upload_max_filesize ustawionej w pliku php.ini?

A.
echo phpversion('upload_max_filesize');
B.
echo ini_get('upload_max_filesize');
C.
echo getenv('upload_max_filesize');
D.
ini_set('upload_max_filesize');
W tym pytaniu chodzi o odczyt wartości pojedynczej dyrektywy konfiguracyjnej PHP, zapisanej najczęściej w pliku php.ini albo nadpisanej lokalnie przez konfigurację serwera. Do tego służy funkcja ini_get(), więc zapis echo ini_get('upload_max_filesize'); wyświetli aktualną wartość tej dyrektywy widzianą przez uruchomiony skrypt. To jest ważne praktycznie, bo upload_max_filesize wpływa na maksymalny rozmiar pliku przesyłanego przez formularz HTML do PHP. Jeśli użytkownik próbuje wysłać większy plik, PHP może go po prostu nie przyjąć, zanim jeszcze nasz kod zacznie go sensownie obsługiwać. Moim zdaniem warto też pamiętać, że przy uploadzie plików trzeba sprawdzić nie tylko upload_max_filesize, ale także post_max_size, max_file_uploads oraz limity po stronie serwera WWW. Dobrą praktyką jest używanie ini_get() do diagnostyki, a nie wrzucanie publicznie pełnego phpinfo(), bo ono pokazuje mnóstwo danych o środowisku. W aplikacji produkcyjnej takie informacje powinny być dostępne tylko administratorowi albo w ogóle wyłączone.
Błąd w tym pytaniu zwykle bierze się z pomylenia kilku różnych mechanizmów PHP, które na pierwszy rzut oka wyglądają podobnie, bo wszystkie dotyczą jakichś ustawień środowiska. Funkcja getenv() służy do odczytu zmiennych środowiskowych systemu lub serwera, na przykład wartości przekazanych przez system operacyjny, kontener Dockera czy konfigurację hostingu. Dyrektywa upload_max_filesize nie jest jednak zwykłą zmienną środowiskową, tylko ustawieniem konfiguracyjnym PHP, dlatego standardowo nie pobiera się jej przez getenv(). Oczywiście administrator mógłby przypadkiem utworzyć zmienną środowiskową o takiej nazwie, ale to nie oznacza, że odczytujemy realną wartość z php.ini.

Funkcja phpversion() też ma zupełnie inne zadanie. Zwraca wersję PHP albo wersję wskazanego rozszerzenia, jeśli poda się nazwę rozszerzenia. Wpisanie tam upload_max_filesize nie ma sensu konfiguracyjnego, bo to nie jest nazwa modułu, tylko dyrektywa odpowiedzialna za limit przesyłanych plików. Z kolei ini_set() kojarzy się dobrze, bo dotyczy ustawień ini, ale służy do ustawiania wartości, a nie do jej wyświetlania. Dodatkowo nie każdą dyrektywę da się zmienić w czasie działania skryptu. upload_max_filesize należy do ustawień, które zwykle ustawia się w php.ini, .user.ini albo konfiguracji serwera, więc próba prostego ustawienia jej w kodzie bywa nieskuteczna. W praktyce, gdy chcesz sprawdzić aktualną konfigurację, używasz ini_get(), a gdy chcesz diagnozować upload plików, patrzysz też na post_max_size i obsługę tablicy $_FILES.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.