KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2012

PYTANIE NR 30.
Która funkcja PHP zapisuje dane do pliku i utworzy go automatycznie, jeśli plik nie istnieje, w jednym wywołaniu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
file_put_contents() zapisuje podany ciąg danych do wskazanego pliku i gdy plik nie istnieje, tworzy go automatycznie. fopen() tylko otwiera/zakłada strumień (do zapisu potrzeba jeszcze np. fwrite()), file_get_contents() służy do odczytu, a include() do dołączania kodu PHP.

Pełne wyjaśnienie:

W PHP do pracy z plikami można używać dwóch popularnych podejść: funkcji "jednowywołaniowych" oraz pracy na strumieniu (uchwycie pliku).

Poprawna odpowiedź: file_put_contents()
Funkcja file_put_contents() zapisuje przekazane dane do pliku. Jeśli plik nie istnieje, zostanie utworzony (o ile serwer ma uprawnienia do zapisu w danej lokalizacji). To spełnia warunek pytania: zapis danych oraz utworzenie pliku odbywa się w jednym wywołaniu.

Dlaczego pozostałe odpowiedzi są błędne?

  • fopen() z trybem "w" – otwiera plik do zapisu (a gdy nie istnieje, zwykle go utworzy), ale samo fopen() nie zapisuje jeszcze danych. Aby faktycznie zapisać treść, trzeba wykonać kolejne wywołanie, np. fwrite(), a na końcu zamknąć plik. Nie spełnia więc warunku "w jednym wywołaniu".
  • file_get_contents() – służy do odczytywania zawartości pliku (lub zasobu), a nie do zapisu. Typowy błąd wynika z podobieństwa nazw do file_put_contents().
  • include() – to mechanizm dołączania i wykonywania pliku PHP jako kodu (np. wspólnego nagłówka/stopki strony), a nie operacja zapisu danych do pliku.

Wskazówka egzaminacyjna: jeżeli w treści jest mowa o "zapisie w jednym wywołaniu", najczęściej chodzi o file_put_contents(). Jeżeli pojawia się "otwarcie pliku w trybie …" lub "praca na uchwycie", zwykle rozwiązaniem jest zestaw fopen() + fwrite() + fclose().

Dodatkowe pytania

Dodatkowe pytania (FAQ):

file_put_contents() to funkcja PHP do szybkiego zapisu danych do pliku.

Zapisuje przekazany tekst/bajty i zwykle tworzy plik, jeśli nie istnieje (przy odpowiednich uprawnieniach). To wygodne rozwiązanie do logów, prostych raportów lub zapisu danych z formularza.

fopen($nazwa, "w") otwiera plik do zapisu, a gdy plik nie istnieje, zazwyczaj go tworzy.

Uwaga: samo fopen() nie zapisuje treści. Do zapisu potrzebujesz kolejnego kroku, np. fwrite(), a po zakończeniu fclose().

file_get_contents() jest funkcją do odczytu zawartości pliku lub URL do zmiennej.

Nazwa bywa myląca, bo jest podobna do file_put_contents(). Na egzaminie zwracaj uwagę na słowa "odczyt", "pobierz zawartość" vs "zapisz", "utwórz plik".

include() służy do dołączania pliku PHP jako kodu (np. wspólnego menu, nagłówka strony) i jego wykonania.

To nie jest funkcja operująca na danych plikowych w sensie zapisu treści. Błąd wynika z mylenia "pracy na plikach" z "wczytywaniem plików jako kodu".

Najprościej użyć file_put_contents().

Przykład ideowy: zapisujesz tekst/JSON/CSV do pliku i funkcja zrobi to jednorazowo. To typowe w zadaniach egzaminacyjnych: zapis wyników, logów, danych z formularza bez otwierania strumienia.

fopen() + fwrite() wybiera się, gdy zapis ma być etapowy: dopisywanie fragmentów w pętli, praca na dużych plikach lub kontrola pozycji w pliku.

file_put_contents() jest szybsze w użyciu przy prostym zapisie całej treści naraz.

Często spotyka się zapis danych z formularza do pliku, tworzenie pliku CSV/JSON, generowanie logów albo eksport wyników zapytania SQL do pliku.

W takich zadaniach popularne są: file_put_contents(), fopen(), fwrite() i podstawowe operacje na ścieżkach.

PHP działa z uprawnieniami użytkownika serwera WWW. Jeśli katalog nie ma prawa zapisu, funkcje tworzące/zapisujące plik (np. file_put_contents()) zakończą się błędem.

W praktyce egzaminacyjnej ważne jest wskazanie poprawnej lokalizacji i świadomość, że brak uprawnień uniemożliwia zapis.

Szukaj słów-kluczy: "zapis", "utworzy plik", "zapisze dane" wskazują na funkcje typu file_put_contents() lub zapis przez strumień.

Z kolei "odczyta", "pobierze zawartość" kierują na file_get_contents().

Najczęstsze pomyłki to: mylenie file_get_contents() z file_put_contents(), uznanie że samo fopen() "zapisuje", oraz wybór include() jako "operacji na pliku".

Pomaga zapamiętać: get=odczyt, put=zapis.

info

To pytanie poprawnie rozwiązuje 56% zdających egzamin. średnie

Według specjalistów z branży: "file_put_contents() zapisuje podany ciąg danych do wskazanego pliku i gdy plik nie istnieje, tworzy go automatycznie."

Źródła:

  • PHP Manual – file_put_contents(): https://www.php.net/manual/en/function.file-put-contents.php (dostęp: 2026-02-24)
  • PHP Manual – fopen(): https://www.php.net/manual/en/function.fopen.php (dostęp: 2026-02-24)

Materiały:

  • Dokumentacja PHP: funkcje file_put_contents(), fopen(), fwrite() (manual php.net)
  • Ćwiczenia: zapis i odczyt pliku tekstowego oraz CSV w PHP
  • Przykłady OKE/arkusze próbne z części programistycznej związanej z PHP i bazami danych

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego