Zainstaluj PHP 8.1 i skonfiguruj lokalne środowisko programistyczne na Ubuntu
Poprzednia wersja tego samouczka została napisana przez alenaholligan.
Wprowadzenie
PHP to popularny, otwartoźródłowy język skryptowy po stronie serwera, stworzony do tworzenia stron internetowych i napędzający znaczną część internetu, od blogów i stron e-commerce po aplikacje na dużą skalę. Z każdą nową wersją PHP oferuje lepszą wydajność, bezpieczeństwo i nowoczesne funkcje programistyczne, pomagając programistom w tworzeniu solidnego i skalowalnego oprogramowania.
PHP 8.1 jest stabilnym wydaniem o długoterminowym wsparciu, które wprowadza znaczące ulepszenia i nowe funkcje językowe, zachowując przy tym niezawodność. Instalacja PHP 8.1 na Ubuntu zapewnia, że Twoje lokalne środowisko programistyczne jest aktualne, bezpieczne i kompatybilne z szeroko stosowanymi frameworkami i platformami takimi jak WordPress, Laravel oraz niestandardowe aplikacje PHP.
Ten poradnik przeprowadzi Cię przez instalację PHP 8.1 na Ubuntu, konfigurację z Apache lub Nginx, ustawienie niezbędnych rozszerzeń PHP oraz instalację Composera do zarządzania zależnościami. Dowiesz się także, jak sprawdzić swoją instalację i rozwiązywać typowe problemy.
Wdrażaj swoje aplikacje PHP z GitHub za pomocą platformy aplikacji Linux-Console.net. Pozwól, aby Linux-Console.net zajmował się skalowaniem Twojej aplikacji.
Najważniejsze wnioski
Instalacja PHP 8.1 na Ubuntu 22.04: Ubuntu 22.04 LTS zawiera PHP 8.1 w swoich domyślnych repozytoriach, co pozwala na zainstalowanie stabilnej wersji PHP objętej długoterminowym wsparciem za pomocą
apt, bez korzystania z zewnętrznych PPA. Zapewnia to przewidywalne aktualizacje, poprawki bezpieczeństwa oraz kompatybilność z nowoczesnymi frameworkami PHP.Podstawowe rozszerzenia PHP dla projektów rzeczywistych: Większość aplikacji PHP produkcyjnej wymaga rozszerzeń takich jak
mysql,curl,xml,mbstring,zip,gdibcmath. Wczesna instalacja tych rozszerzeń zapobiega błędom w czasie wykonywania i zapewnia kompatybilność z frameworkami takimi jak Laravel, Symfony i WordPress.Wybór między Apache a Nginx do tworzenia aplikacji w PHP: Apache może wykonywać PHP bezpośrednio za pomocą
mod_php, podczas gdy Nginx wymaga PHP‑FPM do obsługi żądań. Oba podejścia dobrze sprawdzają się w środowisku lokalnym, jednak PHP‑FPM lepiej odzwierciedla nowoczesne środowiska produkcyjne i lepiej skaluję się pod obciążeniem.Composer jako fundament nowoczesnych przepływów pracy w PHP: Composer zarządza zależnościami projektu za pomocą
composer.jsonicomposer.lock, zapewniając spójne kompilacje na różnych maszynach. Jest niezbędny do instalowania frameworków, generowania autoloaderów oraz utrzymywania niezawodnych wersji zależności w zespołowych projektach PHP.Konfigurowanie PHP specjalnie do celów rozwojowych: Środowiska deweloperskie korzystają z rozbudowanego raportowania błędów, wyższych limitów pamięci i dłuższych czasów wykonywania. Dostosowanie tych ustawień w
php.inipozwala szybko wykrywać błędy podczas rozwoju, ale zawsze należy je przywrócić w środowisku produkcyjnym.Rozwiązywanie problemów i weryfikacja są częścią konfiguracji: Sprawdzenie PHP za pomocą
php -v, kontrola załadowanych rozszerzeń oraz przeglądanie logów Apache, Nginx lub PHP‑FPM to kluczowe kroki. Większość problemów z konfiguracją wynika z brakujących rozszerzeń, uprawnień lub nieprawidłowo skonfigurowanych dyrektyw serwera WWW.
Wymagania wstępne
Aby ukończyć ten samouczek, potrzebujesz:
- Lokalny komputer lub wirtualny serwer działający na systemie Ubuntu (kompatybilny z Ubuntu 22.04 LTS i nowszymi wersjami)
- Dostęp administracyjny (sudo) do maszyny
- Aktywne połączenie internetowe
- Podstawowa znajomość wiersza poleceń
Jeśli konfigurujesz nowy serwer Ubuntu, zobacz nasz przewodnik po początkowej konfiguracji serwera z Ubuntu.
Krok 1 — Konfiguracja PHP 8.1
Będziesz kończyć instalację i konfigurację w wierszu poleceń, co jest niegraficznym sposobem interakcji z komputerem. To znaczy, zamiast klikać przyciski, będziesz wpisywać tekst i otrzymywać odpowiedzi od komputera również w formie tekstowej.
Wiersz poleceń, znany również jako powłoka lub terminal, może pomóc w modyfikowaniu i automatyzacji wielu codziennych zadań wykonywanych na komputerze i jest niezbędnym narzędziem dla programistów. Istnieje wiele poleceń terminala, które warto poznać, aby móc wykonywać bardziej zaawansowane operacje. Artykuł "Wprowadzenie do terminala Linux" może lepiej zapoznać Cię z terminalem.
Uwaga: Jeśli jesteś nowy w Ubuntu, rozważ zapoznanie się z naszą dokumentacją Ubuntu w celu uzyskania dodatkowych wskazówek dotyczących administrowania systemem.
Na Ubuntu aplikację Terminal można znaleźć, klikając ikonę Ubuntu w lewym górnym rogu ekranu i wpisując terminal w pasku wyszukiwania. Kliknij ikonę aplikacji Terminal, aby ją otworzyć. Alternatywnie, możesz jednocześnie nacisnąć klawisze CTRL, ALT i T na klawiaturze, aby automatycznie otworzyć aplikację Terminal.
Uwaga: W systemie Ubuntu 22.04 LTS PHP 8.1 jest dostępny w domyślnych repozytoriach. Gdy instalujesz PHP bez określania wersji w Ubuntu 22.04, system domyślnie instaluje PHP 8.1.
Jeśli musisz zarządzać wieloma wersjami PHP lub zainstalować inną wersję, rozważ użycie phpenv lub phpbrew do zarządzania wersjami.
Uruchom następujące polecenia, aby zaktualizować listę dostępnych pakietów, a następnie zainstalować PHP 8.1:
sudo apt updatesudo apt install --no-install-recommends php8.1Flaga --no-install-recommends zapewni, że inne pakiety, takie jak serwer WWW Apache, nie zostaną zainstalowane.
Sprawdź informacje o wersji PHP za pomocą następującego polecenia:
php -vOtrzymasz taki wynik:
PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies
To ustawienie zostało przetestowane na Ubuntu 22.04 LTS z użyciem pakietów PHP 8.1 z oficjalnych repozytoriów Ubuntu.
Zainstaluj niezbędne rozszerzenia PHP do tworzenia stron internetowych:
sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmathTo polecenie zainstaluje następujące moduły:
php8.1-cli- interpreter poleceń, przydatny do testowania skryptów PHP z poziomu powłoki lub wykonywania ogólnych zadań związanych z pisaniem skryptów w shelluphp8.1-common- dokumentacja, przykłady i wspólne moduły dla PHPphp8.1-mysql- do pracy z bazami danych MySQLphp8.1-zip- do pracy z plikami skompresowanymiphp8.1-gd- do pracy z obrazamiphp8.1-mbstring- używany do obsługi łańcuchów znaków nie-ASCIIphp8.1-curl- umożliwia wykonywanie żądań HTTP w PHPphp8.1-xml- do pracy z danymi XMLphp8.1-bcmath- używane przy pracy z liczbami zmiennoprzecinkowymi o wysokiej precyzji
Pliki konfiguracyjne PHP są przechowywane w /etc/php/8.1/. Główny plik konfiguracyjny to php.ini, który może znajdować się w różnych katalogach w zależności od Twojej konfiguracji:
- Konfiguracja CLI:
/etc/php/8.1/cli/php.ini - Konfiguracja Apache:
/etc/php/8.1/apache2/php.ini(jeśli Apache jest zainstalowany) - Konfiguracja PHP-FPM:
/etc/php/8.1/fpm/php.ini(jeśli PHP-FPM jest zainstalowany)
Sprawdź zainstalowane rozszerzenia:
php -mTo lista wszystkich załadowanych modułów PHP. Jeśli php -v pokazuje inną wersję niż oczekiwana, możesz mieć zainstalowanych kilka wersji PHP. Użyj php8.1 -v, aby sprawdzić konkretnie PHP 8.1.
Zainstalowałeś PHP i sprawdziłeś wersję, którą masz uruchomioną. Zainstalowałeś również wszystkie wymagane moduły PHP i udało Ci się wyświetlić listę załadowanych modułów.
Krok 2 — Konfigurowanie PHP z Apache
Zainstaluj moduł Apache PHP:
sudo apt install libapache2-mod-php8.1Włącz moduł i uruchom ponownie Apache:
sudo a2enmod php8.1
sudo systemctl restart apache2Rozumienie mod_php: Moduł mod_php osadza PHP bezpośrednio w procesie Apache. Gdy Apache otrzymuje żądanie pliku PHP, przetwarza go wewnętrznie przy użyciu wbudowanego interpretera PHP. Różni się to od Nginx, który wymaga oddzielnej usługi PHP-FPM. Polecenie a2enmod tworzy łącze symboliczne w /etc/apache2/mods-enabled/, aby aktywować moduł.
Sprawdź, czy Apache poprawnie obsługuje PHP, tworząc plik testowy w katalogu głównym dokumentów Apache (zazwyczaj /var/www/html):
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.phpOdwiedź http://localhost/info.php w swojej przeglądarce. Powinieneś zobaczyć stronę z informacjami konfiguracyjnymi PHP. Usuń ten plik po testach w celu zapewnienia bezpieczeństwa:
sudo rm /var/www/html/info.phpRozwiązywanie problemów z Apache i PHP
Jeśli Apache nie uruchamia się po zainstalowaniu mod_php:
Sprawdź dziennik błędów Apache:
sudo tail -20 /var/log/apache2/error.logTypowe problemy obejmują:
- Konfliktujące moduły PHP: Jeśli masz wiele wersji PHP, najpierw wyłącz inne moduły PHP za pomocą
sudo a2dismod php7.4(jeśli są obecne) - Błędy składni w konfiguracji Apache: Uruchom
sudo apache2ctl configtest, aby sprawdzić
Jeśli odwiedzasz localhost i widzisz „It works!”, ale pliki PHP wyświetlają się jako zwykły tekst:
To oznacza, że Apache nie przetwarza PHP. Sprawdź:
- Sprawdź, czy moduł jest włączony:
apache2ctl -M | grep php- Jeśli nic się nie pojawia, moduł nie jest załadowany. Włącz go ponownie:
sudo a2enmod php8.1
sudo systemctl restart apache2- Sprawdź, czy Twój plik PHP ma prawidłowe rozszerzenie (
.php) i zawiera kod PHP
Jeśli otrzymasz błąd 403 Zabronione:
Sprawdź uprawnienia pliku:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/htmlUwaga dotycząca bezpieczeństwa: Funkcja phpinfo() ujawnia szczegółowe informacje o systemie. Nigdy nie pozostawiaj plików zawierających phpinfo() na serwerach produkcyjnych.
Konfiguracja wirtualnego hosta Apache
Do lokalnego rozwoju z niestandardowymi domenami, utwórz hosta wirtualnego:
sudo nano /etc/apache2/sites-available/example.local.confDodaj tę konfigurację:
<VirtualHost *:80>
ServerName example.local
DocumentRoot /var/www/example.local
<Directory /var/www/example.local>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>ServerName: Nazwa domeny dla tego wirtualnego hostaDocumentRoot: Gdzie znajdują się Twoje pliki PHPAllowOverride All: Pozwala plikom.htaccessnadpisywać ustawienia Apache (potrzebne dla frameworków takich jak Laravel)Require all granted: Pozwala na dostęp do katalogu
Utwórz katalog, włącz stronę i uruchom ponownie Apache:
sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2Dodaj domenę do swojego pliku /etc/hosts w celu lokalnego dostępu:
echo "127.0.0.1 example.local" | sudo tee -a /etc/hostsWybór między Apache a Nginx
Zanim skonfigurujesz swój serwer internetowy, zastanów się, który najlepiej odpowiada Twoim potrzebom:
| Funkcja | Apache z mod_php | Nginx z PHP-FPM |
|---|---|---|
| Przetwarzanie PHP | Osadzone w procesie Apache | Oddzielna usługa PHP-FPM |
| Użycie pamięci | Wyższy (PHP w każdym procesie Apache) | Niższy (oddzielny zbiornik procesów) |
| Wydajność | Dobre dla niskiego do średniego ruchu | Lepsze przy dużym ruchu i równoczesnych żądaniach |
| Konfiguracja | Prostsza początkowa konfiguracja | Bardziej skomplikowane (wymaga konfiguracji PHP-FPM) |
| Wsparcie dla .htaccess | Wbudowane wsparcie | Nieobsługiwane (należy skonfigurować w blokach serwera) |
| Użycie produkcyjne | Powszechne w hostingu współdzielonym | Powszechne we współczesnych wdrożeniach |
| Krzywa uczenia się | Łatwiejsze dla początkujących | Stromsza krzywa uczenia się |
| Efektywność zasobów | Mniej wydajny przy dużym obciążeniu | Bardziej wydajny przy dużym obciążeniu |
Kiedy wybrać Apache:
- Znasz Apache lub potrzebujesz wsparcia dla
.htaccess - Konfigurowanie prostego środowiska programistycznego
- Praca z frameworkami, które w dużym stopniu polegają na
.htaccess(niektóre konfiguracje WordPressa) - Wolisz prostszą początkową konfigurację
Kiedy wybrać Nginx:
- Potrzebujesz lepszej wydajności przy dużym obciążeniu
- Chcesz odzwierciedlić nowoczesne środowiska produkcyjne
- Tworzysz aplikacje, które będą mogły się skalować
- Wolisz bardziej nowoczesną architekturę
Oba rozwiązania sprawdzają się równie dobrze w lokalnym środowisku deweloperskim. Wybór często zależy od osobistych preferencji lub istniejącej infrastruktury.
Krok 3 — Konfiguracja PHP z Nginx
Zainstaluj PHP-FPM (FastCGI Process Manager):
sudo apt install php8.1-fpmUruchom i włącz PHP-FPM:
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpmZrozumienie PHP-FPM i FastCGI: W przeciwieństwie do mod_php w Apache, Nginx nie przetwarza PHP bezpośrednio. PHP-FPM (FastCGI Process Manager) działa jako osobna usługa, z którą Nginx komunikuje się za pomocą protokołu FastCGI. FastCGI to protokół binarny służący do łączenia programów z serwerami WWW — jest szybciej niż tradycyjne CGI, ponieważ utrzymuje procesy przy życiu między żądaniami.
Gdy Nginx otrzymuje żądanie dotyczące pliku PHP, przekazuje je do PHP-FPM za pośrednictwem gniazda Unix (lub połączenia TCP). PHP-FPM przetwarza kod PHP i zwraca wynik do Nginx, który następnie wysyła go do klienta. To rozdzielenie pozwala PHP-FPM zarządzać własną pulą procesów, poprawiając wydajność i zarządzanie zasobami.
Konfiguracja bloku serwera Nginx
Utwórz konfigurację bloku serwera:
sudo nano /etc/nginx/sites-available/example.localDodaj tę konfigurację:
server {
listen 80;
server_name example.local;
root /var/www/example.local;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Wyjaśnienie konfiguracji:
root: Katalog, w którym znajdują się Twoje pliki PHPlocation ~ \.php$: Dopasowuje wszystkie żądania kończące się na.phpza pomocą wyrażeń regularnychinclude snippets/fastcgi-php.conf: Zawiera domyślną konfigurację FastCGI Nginx (ustawiaSCRIPT_FILENAMEi inne wymagane zmienne)fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: Gniazdo Unix, na którym nasłuchuje PHP-FPM. W ten sposób Nginx komunikuje się z PHP-FPM. Ścieżka do gniazda jest zdefiniowana w/etc/php/8.1/fpm/pool.d/www.conf
Włącz witrynę i przetestuj konfigurację:
sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -tJeśli test zakończy się powodzeniem, uruchom ponownie Nginx:
sudo systemctl restart nginxDodaj domenę do /etc/hosts:
echo "127.0.0.1 example.local" | sudo tee -a /etc/hostsUtwórz plik testowy PHP:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.phpOdwiedź http://example.local/info.php. Powinieneś zobaczyć stronę konfiguracyjną PHP. Usuń plik testowy po weryfikacji:
sudo rm /var/www/example.local/info.phpRozwiązywanie problemów z Nginx i PHP
Jeśli otrzymasz błąd „502 Bad Gateway”:
To oznacza, że Nginx nie może komunikować się z PHP-FPM. Sprawdź:
- Sprawdź, czy PHP-FPM działa:
sudo systemctl status php8.1-fpm- Sprawdź, czy ścieżka gniazda jest poprawna. Lokalizacja gniazda jest określona w
/etc/php/8.1/fpm/pool.d/www.conf:
grep listen /etc/php/8.1/fpm/pool.d/www.confPowinieneś zobaczyć coś w rodzaju listen=/run/php/php8.1-fpm.sock. Ścieżka w Twojej konfiguracji Nginx musi dokładnie pasować. Zauważ, że /var/run jest często dowiązaniem symbolicznym do /run, więc obie ścieżki działają.
- Sprawdź uprawnienia pliku gniazda:
ls -la /var/run/php/php8.1-fpm.sockGniazdko powinno być własnością www-data lub użytkownika, pod którym działa Nginx. Jeśli uprawnienia są nieprawidłowe:
sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock- Sprawdź dziennik błędów Nginx:
sudo tail -20 /var/log/nginx/error.logMożesz zobaczyć błędy takie jak:
connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)To wskazuje, że ścieżka gniazda jest nieprawidłowa lub PHP-FPM nie działa.
Jeśli pliki PHP są pobierane zamiast wykonywane:
To oznacza, że Nginx nie przekazuje plików PHP do PHP-FPM. Sprawdź:
- Blok
location ~ \.php$istnieje w konfiguracji Twojego serwera - Dyrektywa
fastcgi_passwskazuje na poprawny socket - Ponownie uruchomiłeś Nginx po wprowadzeniu zmian
Jeśli pojawi się błąd „Plik nie znaleziony”:
Sprawdź, czy istnieje snippets/fastcgi-php.conf:
ls -la /etc/nginx/snippets/fastcgi-php.confTen plik ustawia SCRIPT_FILENAME, co wskazuje PHP-FPM, który plik ma wykonać. Bez tego PHP-FPM nie wie, który plik przetworzyć.
Krok 4 — Konfigurowanie PHP do celów programistycznych
Skonfiguruj PHP do pracy w trybie deweloperskim, dostosowując raportowanie błędów, ustawienia wyświetlania i limity pamięci w php.ini. Te ustawienia różnią się od konfiguracji produkcyjnych.
PHP używa osobnych plików konfiguracyjnych dla CLI (wiersza poleceń) i użycia w serwerze WWW. Edytuj odpowiedni plik:
Dla CLI (podczas uruchamiania PHP z terminala):
sudo nano /etc/php/8.1/cli/php.iniDla serwera WWW (Apache lub Nginx z PHP-FPM):
# For Apache
sudo nano /etc/php/8.1/apache2/php.ini
# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.iniUwaga: Jeśli korzystasz zarówno z CLI, jak i serwera internetowego, musisz skonfigurować oba pliki osobno. Zmiany w cli/php.ini nie mają wpływu na żądania webowe, a zmiany w apache2/php.ini lub fpm/php.ini nie dotyczą skryptów CLI.
Podstawowe ustawienia deweloperskie
Znajdź i zaktualizuj te ustawienia w swoim pliku php.ini:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_YorkCo robi każda opcja:
display_errors=On: Wyświetla błędy PHP bezpośrednio w przeglądarce (przydatne do debugowania, niebezpieczne w środowisku produkcyjnym)display_startup_errors=On: Pokazuje błędy, które występują podczas uruchamiania PHPerror_reporting=E_ALL: Zgłasza wszystkie typy błędów (ostrzeżenia, powiadomienia itp.)log_errors=On: Zapisuje błędy do pliku dziennikaerror_log: Gdzie PHP zapisuje logi błędówmemory_limit=256M: Maksymalna ilość pamięci, jaką może wykorzystać skrypt (zwiększ, jeśli otrzymujesz błędy „brak pamięci”)upload_max_filesize=64M: Maksymalny rozmiar przesyłanych plikówpost_max_size=64M: Maksymalny rozmiar danych przesyłanych metodą POST (musi być większy niżupload_max_filesize)max_execution_time=300: Maksymalny czas działania skryptu (w sekundach)date.timezone: Ustawia domyślną strefę czasową (użyj swojej lokalnej strefy czasowej:Asia/Kolkata,Europe/London,UTCitp.)
Ostrzeżenie dotyczące produkcji: Nigdy nie używaj tych ustawień deweloperskich w środowisku produkcyjnym. Zawsze ustaw display_errors=Off i stosuj odpowiednie poziomy raportowania błędów na serwerach produkcyjnych.
Po wprowadzeniu zmian, uruchom ponownie serwer WWW:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpmWeryfikacja Twojej konfiguracji
Sprawdź, czy Twoje zmiany zostały zastosowane:
# For CLI
php -i | grep display_errors
# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.phpOdwiedź plik testowy w przeglądarce i wyszukaj display_errors. Powinno być wyświetlone On. Usuń plik testowy po weryfikacji.
Jeśli Twoje zmiany nie pojawią się:
- Upewnij się, że edytowałeś właściwy plik
php.ini(CLI vs serwer www) - Sprawdź literówki w nazwach ustawień (rozróżniają wielkość liter)
- Uruchom ponownie serwer internetowy po wprowadzeniu zmian
- Niektóre ustawienia można nadpisać za pomocą
.htaccess(Apache) lubphp.iniw katalogu projektu
Możesz zacząć używać PHP od razu, ale prawdopodobnie będziesz chciał korzystać z różnych bibliotek, aby szybko tworzyć aplikacje w PHP. Zanim przetestujesz swoje środowisko PHP, najpierw skonfiguruj menedżera zależności dla swoich projektów.
Krok 5 — Konfiguracja Composera do zarządzania zależnościami (opcjonalnie)
Biblioteki to zbiór kodu, który może pomóc w rozwiązywaniu typowych problemów bez konieczności pisania wszystkiego samodzielnie. Ponieważ dostępnych jest wiele bibliotek, korzystanie z menedżera zależności pomoże Ci zarządzać wieloma bibliotekami w miarę zdobywania doświadczenia w pisaniu w PHP.
Composer to narzędzie do zarządzania zależnościami w PHP. Umożliwia deklarowanie bibliotek, od których zależy Twój projekt, i zarządza instalowaniem oraz aktualizowaniem tych pakietów.
Chociaż podobny, Composer nie jest menedżerem pakietów w tym samym sensie, co yum czy apt. Obsługuje „pakiety” lub biblioteki, ale zarządza nimi na poziomie poszczególnych projektów, instalując je w katalogu (np. vendor) wewnątrz projektu. Domyślnie nie instaluje nic globalnie. W związku z tym jest menedżerem zależności. Obsługuje jednak projekt globalny dla wygody za pomocą polecenia global.
Ten pomysł nie jest nowy, a Composer jest silnie inspirowany npm Node’a i bundler Rubiego.
Załóżmy:
- Masz projekt, który zależy od kilku bibliotek.
- Niektóre z tych bibliotek zależą od innych bibliotek.
Kompozytor:
- Umożliwia deklarowanie bibliotek, od których zależysz.
- Określa, które wersje których pakietów mogą i muszą zostać zainstalowane, a następnie instaluje je, pobierając je do Twojego projektu.
- Umożliwia aktualizację wszystkich zależności jednym poleceniem.
- Pozwala zobaczyć rozdział Podstawowe Użytkowanie, aby uzyskać więcej szczegółów na temat deklarowania zależności.
Pobierz instalator Composera:
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.phpSprawdź integralność instalatora, porównując jego sumę kontrolną SHA-384. Pobierz najnowszą sumę kontrolną:
HASH=$(curl -sS https://composer.github.io/installer.sig)Sprawdź, czy skrót się zgadza:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"Powinieneś zobaczyć:
Installer verifiedJeśli widzisz Installer corrupt, pobieranie było niekompletne lub plik został zmodyfikowany. Pobierz instalator ponownie i sprawdź sumę kontrolną. Jeśli problem nadal występuje, sprawdź swoje połączenie internetowe lub spróbuj pobrać plik z innej sieci.
Zainstaluj Composer globalnie:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composerOtrzymasz wynik podobny do tego:
All settings correct for using Composer
Downloading...
Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composerPrzetestuj swoją instalację:
composerOtrzymasz wynik podobny do poniższego:
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.3.5 2022-04-13 16:43:00
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
--no-scripts Skips the execution of all scripts defined in composer.json file.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .To potwierdza, że Composer został pomyślnie zainstalowany na Twoim systemie i jest dostępny globalnie.
Uwaga: Jeśli wolisz mieć osobne pliki wykonywalne Composera dla każdego projektu hostowanego na Twoim serwerze, możesz zainstalować go lokalnie, dla każdego projektu osobno. Ta metoda jest również przydatna, gdy użytkownik systemowy nie ma uprawnień do instalowania oprogramowania w całym systemie.
Aby to zrobić, użyj polecenia php /tmp/composer-setup.php bez żadnych argumentów. To polecenie wygeneruje plik composer.phar w bieżącym katalogu, który można uruchomić za pomocą php composer.phar.
Krok 6 — Korzystanie z Composera w projekcie PHP
Na ostatnim etapie możesz opcjonalnie zainicjalizować swój projekt za pomocą composer init. Spowoduje to utworzenie pliku composer.json, który będzie zarządzał zależnościami Twojego projektu. Inicjalizacja projektu pozwoli Ci również określić szczegóły projektu, takie jak Autor i Licencja, oraz korzystać z funkcji automatycznego ładowania Composera. Możesz teraz określić zależności lub dodać je później.
Utwórz katalog projektu i zainicjuj Composer:
cd ~
mkdir example-project
cd example-project
composer initUruchomienie tego polecenia uruchomi kreatora konfiguracji. Dane wprowadzone w kreatorze można później zaktualizować, więc możesz zostawić ustawienia domyślne i po prostu nacisnąć ENTER. Jeśli nie jesteś gotowy do instalacji żadnych zależności, możesz wybrać nie. Wprowadź swoje dane przy każdym wyświetlanym monicie:
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [sammy/example-project]: sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n
{
"name": "sammy/project1",
"type": "project",
"authors": [
{
"name": "Sammy",
"email": "sammy@linux-console.net"
}
],
"require": {}
}
Do you confirm generation [yes]? yesZanim potwierdzisz wygenerowanie, zobaczysz przykładowy plik composer.json, który utworzy kreator. Jeśli wszystko wygląda dobrze, możesz potwierdzić domyślną opcję tak. Jeśli potrzebujesz zacząć od nowa, wybierz nie.
Za pierwszym razem, gdy zdefiniujesz jakąkolwiek zależność, Composer utworzy folder vendor. Wszystkie zależności instalowane są w tym folderze vendor. Composer tworzy również plik composer.lock. Plik ten określa dokładną wersję każdej zależności i podzależności używanej w Twoim projekcie. Zapewnia to, że każda maszyna, na której uruchamiany jest Twój program, będzie korzystać dokładnie z tej samej wersji każdego pakietu.
Uwaga: Folder vendor nigdy nie powinien być commitowany do systemu kontroli wersji (VCS). Folder vendor zawiera jedynie pakiety, które zainstalowałeś od innych dostawców. Ci poszczególni dostawcy utrzymują własny kod w swoich systemach kontroli wersji. Powinieneś śledzić tylko kod, który sam piszesz. Zamiast commitować folder vendor, wystarczy, że commitujesz pliki composer.json i composer.lock. Więcej informacji o ignorowaniu konkretnych plików znajdziesz w przewodniku Jak korzystać z Git: przewodnik referencyjny.
Teraz, gdy masz zainstalowane PHP i sposób zarządzania zależnościami projektu za pomocą Composera, jesteś gotowy, aby przetestować swoje środowisko.
Krok 7 — Testowanie środowiska PHP
Utwórz i uruchom podstawowy skrypt PHP, aby przetestować swoją instalację:
nano hello.phpDodaj następujący kod PHP:
<?php
echo 'Hello World!';
?>Zapisz i zamknij plik (naciśnij CTRL+X, następnie Y, a potem ENTER). Uruchom skrypt:
php hello.phpJeśli PHP zostanie poprawnie przetworzone, zobaczysz tylko znaki znajdujące się w cudzysłowach:
Hello World!PHP pomyślnie przetworzył skrypt, co oznacza, że Twoje środowisko PHP jest poprawnie zainstalowane i możesz kontynuować swoją przygodę z programowaniem.
Krok 8 — Konfigurowanie rzeczywistych projektów PHP
Nowoczesne frameworki PHP, takie jak Laravel, Symfony i WordPress, wymagają określonych rozszerzeń PHP oraz Composera. Zainstaluj framework za pomocą Composera lub instalatora frameworka, a następnie skonfiguruj serwer internetowy tak, aby wskazywał na publiczny katalog projektu.
Konfigurowanie Laravel
Zainstaluj Laravel używając Composer:
composer create-project laravel/laravel my-laravel-app
cd my-laravel-appTo polecenie pobiera Laravel i wszystkie jego zależności. Proces może potrwać kilka minut.
Laravel wymaga tych rozszerzeń PHP (zainstalowanych w Kroku 1):
php8.1-mbstring- Obsługa ciągów wielobajtowychphp8.1-xml- analiza XMLphp8.1-curl- żądania HTTPphp8.1-zip- Obsługa archiwówphp8.1-bcmath- matematyka o dowolnej precyzji
Jeśli Laravel wyświetla komunikat „brak mbstring”, nawet po jego zainstalowaniu:
Zazwyczaj oznacza to, że rozszerzenie jest zainstalowane, ale nie załadowane. Sprawdź:
- Sprawdź, czy rozszerzenie jest zainstalowane:
php -m | grep mbstring- Jeśli go brakuje, zainstaluj go:
sudo apt install php8.1-mbstring- Jeśli jest zainstalowane, ale się nie wyświetla, uruchom ponownie serwer WWW:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpm- Sprawdź, który plik
php.inijest używany. Instalator Laravel korzysta z PHP w trybie CLI, więc sprawdź:
php --iniUpewnij się, że rozszerzenie jest włączone w pliku php.ini dla CLI.
Sprawdzanie instalacji Laravel:
Po zakończeniu instalacji uruchom serwer deweloperski Laravel:
php artisan servePowinieneś zobaczyć:
INFO Server running on [http://127.0.0.1:8000]Odwiedź http://localhost:8000 w swojej przeglądarce. Powinieneś zobaczyć stronę powitalną Laravela.
Dla środowisk produkcyjnych korzystających z Apache lub Nginx:
Skonfiguruj swój serwer internetowy tak, aby wskazywał na katalog public (nie na katalog główny projektu). Plik public/index.php w Laravelu jest punktem wejściowym dla wszystkich żądań.
Uwaga: Dowiedz się więcej o Laravel w naszym poradniku Jak Zainstalować Laravel na Ubuntu.
Konfigurowanie WordPressa
Pobierz i rozpakuj WordPress:
cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpressWordPress wymaga bazy danych MySQL lub MariaDB. Zainstaluj MySQL, jeśli to konieczne:
sudo apt install mysql-server
sudo mysql_secure_installationSkrypt mysql_secure_installation poprosi Cię o:
- Ustaw hasło roota
- Usuń anonimowych użytkowników
- Zabroń zdalnego logowania jako root
- Usuń bazę danych testową
- Przeładuj tabele uprawnień
Utwórz bazę danych i użytkownika dla WordPressa:
sudo mysql -u root -pW wierszu poleceń MySQL:
CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;Zastąp secure_password silnym hasłem. WordPress użyje tych danych uwierzytelniających do połączenia z bazą danych.
Jeśli WordPress nie może połączyć się z bazą danych:
- Sprawdź, czy MySQL działa:
sudo systemctl status mysql- Przetestuj połączenie z bazą danych:
mysql -u wpuser -p wordpress_dbJeśli to się nie uda, sprawdź:
- Nazwa użytkownika i hasło są poprawne
- Baza danych istnieje:
SHOW DATABASES; - Użytkownik ma uprawnienia:
SHOW GRANTS FOR 'wpuser'@'localhost';
- Sprawdź, czy zainstalowane jest rozszerzenie MySQL dla PHP:
php -m | grep mysqlJeśli brakuje, zainstaluj to:
sudo apt install php8.1-mysql
sudo systemctl restart apache2 # or php8.1-fpm for NginxKończenie instalacji WordPressa:
Skonfiguruj swój serwer internetowy, aby wskazywał na /var/www/wordpress (zobacz Krok 2 dla Apache lub Krok 3 dla Nginx). Odwiedź stronę w przeglądarce. WordPress poprosi Cię o:
- Wybierz swój język
- Wprowadź dane logowania do bazy danych (użyj bazy danych, nazwy użytkownika i hasła, które utworzyłeś)
- Ukończ instalację
Uwaga: Aby uzyskać szczegółowe informacje na temat instalacji WordPress, zobacz Jak zainstalować WordPress z LAMP na Ubuntu.
Konfigurowanie Symfony
Zainstaluj Symfony za pomocą Composera:
composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-appSymfony wymaga tych samych rozszerzeń co Laravel. Uruchom serwer deweloperski:
symfony server:startAlbo użyj wbudowanego serwera PHP:
php -S localhost:8000 -t publicJeśli instalacja Symfony zakończy się niepowodzeniem z powodu błędów rozszerzeń:
Sprawdź, czy wszystkie wymagane rozszerzenia są zainstalowane i załadowane:
php -m | grep -E 'mbstring|xml|curl|zip|bcmath'Jeśli jakiekolwiek brakuje, zainstaluj je i uruchom ponownie serwer internetowy.
Krok 9 — Najlepsze praktyki dla lokalnego rozwoju
Zabezpiecz swoje lokalne środowisko, używaj kontroli wersji, skonfiguruj odpowiednie uprawnienia do plików i ustaw konfiguracje specyficzne dla środowiska. Te praktyki zapobiegają problemom z bezpieczeństwem i ułatwiają rozwój.
Kwestie bezpieczeństwa
Nawet podczas lokalnego developmentu stosuj najlepsze praktyki bezpieczeństwa:
Wyłącz niebezpieczne funkcje PHP w środowisku produkcyjnym: Funkcje takie jak
exec(),system()ishell_exec()powinny być ograniczone w plikachphp.iniw środowisku produkcyjnym.Używaj zmiennych środowiskowych: Przechowuj poufną konfigurację w plikach
.env(nigdy nie commituj ich do systemu kontroli wersji). Laravel i Symfony obsługują to natywnie.Ustaw odpowiednie uprawnienia plików: Pliki serwera WWW powinny być czytelne dla użytkownika serwera, ale nie powinny być zapisywalne:
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;Dlaczego te uprawnienia są ważne: Katalogi muszą mieć 755 (odczyt, zapis, wykonanie dla właściciela; odczyt i wykonanie dla innych), aby serwer WWW mógł po nich przechodzić. Pliki muszą mieć 644 (odczyt i zapis dla właściciela; tylko odczyt dla innych), aby serwer WWW mógł je czytać, ale ich nie modyfikować. Zapobiega to nadpisywaniu plików przez złośliwe skrypty.
Integracja z systemem kontroli wersji
Zawsze używaj kontroli wersji w swoich projektach PHP. Zainicjuj Git w katalogu swojego projektu:
cd /var/www/your-project
git initUtwórz plik .gitignore, aby wykluczyć niepotrzebne pliki:
/vendor/
/node_modules/
.env
.DS_Store
*.logOptymalizacja wydajności
Dla lepszej wydajności podczas lokalnego rozwoju:
Włącz OPcache: OPcache jest dołączony do PHP 8.1 i poprawia wydajność poprzez buforowanie skompilowanego kodu PHP.
Użyj optymalizacji autoloadera Composera:
composer install --optimize-autoloader --no-dev- Skonfiguruj pule PHP-FPM dla lepszego zarządzania zasobami, jeśli używasz Nginx.
Krok 10 — Rozwiązywanie typowych problemów
Do częstych problemów z instalacją PHP należą brakujące rozszerzenia, nieprawidłowe uprawnienia plików, błędy konfiguracji serwera WWW oraz konflikty wersji. Większość problemów można rozwiązać, sprawdzając instalację rozszerzeń, weryfikując uprawnienia plików i przeglądając logi serwera WWW.
Rozszerzenia PHP się nie ładują
Jeśli php -m nie pokazuje rozszerzenia, które właśnie zainstalowałeś:
- Sprawdź, czy jest faktycznie zainstalowany:
dpkg -l | grep php8.1-extension_name- Sprawdź, czy plik rozszerzenia istnieje:
ls /usr/lib/php/*/extension_name.so- Sprawdź, czy jest włączone w
php.ini. Niektóre rozszerzenia muszą być włączone ręcznie:
grep -i extension_name /etc/php/8.1/*/php.ini- Uruchom ponownie swój serwer sieciowy:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpm- Sprawdź, który
php.inijest używany:
php --iniUpewnij się, że sprawdzasz właściwy plik php.ini (CLI vs serwer www).
Jeśli rozszerzenie nadal się nie pojawia:
- Niektóre rozszerzenia wymagają dodatkowych bibliotek systemowych. Sprawdź dokumentację rozszerzenia
- Sprawdź, czy zainstalowałeś właściwą wersję (php8.1-extension, a nie php8.0-extension)
- Sprawdź, czy nie ma konfliktujących wersji PHP, które mogą powodować problemy
500 Wewnętrzny Błąd Serwera
Błąd 500 oznacza, że serwer napotkał problem, ale nie może pokazać szczegółów. Sprawdź dzienniki błędów:
# Apache
sudo tail -20 /var/log/apache2/error.log
# Nginx
sudo tail -20 /var/log/nginx/error.log
# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.logNajczęstsze przyczyny i sposoby naprawy:
- Nieprawidłowe uprawnienia plików: Pliki PHP muszą być czytelne dla użytkownika serwera WWW
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;Brakujące rozszerzenia PHP: Sprawdź dziennik błędów pod kątem komunikatów takich jak „Wywołanie niezdefiniowanej funkcji”. Zainstaluj brakujące rozszerzenie i uruchom ponownie serwer WWW.
Błędy składni w plikach PHP: Dziennik błędów pokaże plik i numer linii. Powszechne problemy:
- Brak średników
- Niezamknięte nawiasy lub cudzysłowy
- Używanie niezdefiniowanych funkcji lub klas
Nieprawidłowa konfiguracja serwera WWW:
- Apache: Sprawdź konfigurację wirtualnego hosta, ładowanie modułów
- Nginx: Sprawdź ścieżkę do gniazda PHP-FPM, konfigurację FastCGI
Przekroczono limit pamięci PHP: Zwiększ
memory_limitwphp.ini, jeśli pojawiają się błędy „Przekroczony dozwolony rozmiar pamięci”
Konflikty wersji PHP
Jeśli php -v pokazuje inną wersję niż oczekiwana, masz zainstalowanych kilka wersji PHP.
Sprawdź, które wersje są zainstalowane:
dpkg -l | grep php | grep -E 'php[0-9]'Użyj wyraźnie poprawnej wersji:
php8.1 -v
php8.1 -mZaktualizuj swój serwer WWW, aby używał PHP 8.1:
Dla Apache wyłącz inne moduły PHP i włącz PHP 8.1:
sudo a2dismod php7.4 php8.0 # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2Dla PHP-FPM zatrzymaj inne wersje i uruchom PHP 8.1:
sudo systemctl stop php7.4-fpm php8.0-fpm # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpmUstaw PHP 8.1 jako domyślną wersję CLI:
sudo update-alternatives --set php /usr/bin/php8.1Problemy z pamięcią Composera
Jeśli Composer zabraknie pamięci, zobaczysz błąd taki jak:
Fatal error: Allowed memory size of 134217728 bytes exhaustedNapraw to, uruchamiając Composer z większą ilością pamięci:
php -d memory_limit=512M /usr/local/bin/composer installLub zwiększ limit pamięci PHP w php.ini:
memory_limit = 512MJeśli instalacja Composera zakończy się niepowodzeniem z powodu niezgodności skrótu:
Weryfikacja skrótu może nie powieść się, jeśli:
- Instalator został zaktualizowany od czasu jego pobrania (pobierz ponownie, aby uzyskać najnowszy skrót)
- Twój plik do pobrania został uszkodzony (spróbuj pobrać ponownie)
- Jesteś za serwerem proxy, który modyfikuje pliki (sprawdź ustawienia sieciowe)
Problemy z połączeniem z bazą danych
Jeśli Twoja aplikacja PHP nie może połączyć się z MySQL/MariaDB, możesz zobaczyć błędy takie jak:
SQLSTATE[HY000] [2002] No such file or directorylub
Access denied for user 'username'@'localhost'Kroki rozwiązywania problemów:
- Sprawdź, czy usługa bazy danych działa:
sudo systemctl status mysqlJeśli nie działa, uruchom to:
sudo systemctl start mysql
sudo systemctl enable mysql- Sprawdź, czy zainstalowane jest rozszerzenie MySQL dla PHP:
php -m | grep mysqlJeśli brakuje, zainstaluj to:
sudo apt install php8.1-mysql
sudo systemctl restart apache2 # or php8.1-fpm for Nginx- Zweryfikuj dane uwierzytelniające i uprawnienia bazy danych. Przetestuj połączenie:
mysql -u username -p database_nameJeśli to się nie uda, sprawdź:
- Nazwa użytkownika i hasło są poprawne
- Baza danych istnieje:
SHOW DATABASES; - Użytkownik ma uprawnienia:
SHOW GRANTS FOR 'username'@'localhost';
Uwaga: Aby skonfigurować MySQL, zobacz Jak zainstalować MySQL na Ubuntu.
Plik PHP wyświetla się jako zwykły tekst zamiast się wykonywać
Jeśli Twój plik PHP wyświetla się w przeglądarce jako zwykły tekst:
Sprawdź rozszerzenie pliku: musi być
.php, a nie.txtani.htmlSprawdź, czy PHP przetwarza pliki:
- Apache: Sprawdź, czy
mod_phpjest włączony:apache2ctl -M | grep php
- Apache: Sprawdź, czy
- Nginx: Sprawdź, czy PHP-FPM działa i czy ścieżka do gniazda jest poprawna
Sprawdź uprawnienia do pliku: Serwer internetowy musi mieć możliwość odczytu pliku
Sprawdź, czy plik zawiera kod PHP: Upewnij się, że zaczyna się od
<?phplub<?Sprawdź konfigurację serwera internetowego:
- Apache: Wirtualny host może być nieprawidłowo skonfigurowany
- Nginx: Blok
location ~ \.php$może być nieobecny lub nieprawidłowy
Problemy z przesyłaniem plików
Jeśli przesyłanie plików się nie powiedzie, możesz zobaczyć błędy takie jak:
The uploaded file exceeds the upload_max_filesize directiveSprawdź te ustawienia php.ini:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300Ważne: post_max_size musi być większe niż upload_max_filesize. Jeśli ustawisz upload_max_filesize=100M, ustaw post_max_size=110M lub więcej.
Jeśli przesyłanie wciąż się nie powodzi:
- Sprawdź dziennik błędów pod kątem konkretnych komunikatów o błędach
- Sprawdź, czy katalog przesyłania istnieje i jest zapisywalny:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory- Sprawdź miejsce na dysku:
df -h - Sprawdź, czy formularz używa
enctype="multipart/form-data"
Uruchom ponownie serwer internetowy po wprowadzeniu zmian w pliku php.ini.
Najczęściej zadawane pytania
Jak zainstalować PHP 8.1 na Ubuntu?
Zainstaluj PHP 8.1, korzystając z menedżera pakietów Ubuntu: sudo apt update && sudo apt install php8.1. PHP 8.1 jest dostępne w domyślnych repozytoriach Ubuntu, więc nie są potrzebne żadne dodatkowe źródła pakietów.
Które rozszerzenia PHP są niezbędne do programowania?
Niezbędne rozszerzenia obejmują php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd i php8.1-bcmath. Obejmują one łączność z bazą danych, żądania HTTP, obsługę ciągów znaków oraz przetwarzanie obrazów.
Jak skonfigurować PHP z Apache lub Nginx?
Dla Apache zainstaluj libapache2-mod-php8.1 i włącz go za pomocą sudo a2enmod php8.1. Dla Nginx zainstaluj php8.1-fpm i skonfiguruj Nginx tak, aby przekazywał żądania PHP do gniazda PHP-FPM przy użyciu FastCGI.
Jak mogę sprawdzić, czy PHP jest poprawnie zainstalowane?
Uruchom php -v, aby sprawdzić wersję PHP. Utwórz plik testowy z <?php phpinfo(); ?> i uzyskaj do niego dostęp przez swój serwer WWW, aby zobaczyć szczegółowe informacje o konfiguracji PHP.
Czy mogę uruchomić Laravel lub WordPress lokalnie z tym ustawieniem?
Tak. Laravel wymaga Composera oraz standardowych rozszerzeń PHP wymienionych powyżej. WordPress oprócz PHP potrzebuje bazy danych MySQL. Oba frameworki działają zarówno z konfiguracjami Apache, jak i Nginx.
Jak zainstalować Composer dla projektów PHP?
Pobierz instalator Composera, sprawdź jego sumę kontrolną i zainstaluj go globalnie: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer. Sprawdź działanie poleceniem composer --version.
Jak rozwiązywać problemy z brakującymi rozszerzeniami PHP?
Sprawdź zainstalowane rozszerzenia za pomocą php -m. Zainstaluj brakujące rozszerzenia używając sudo apt install php8.1-nazwa_rozszerzenia, a następnie uruchom ponownie swój serwer WWW.
Jak skonfigurować raportowanie błędów PHP do pracy w trybie deweloperskim?
Edytuj php.ini i ustaw display_errors=On, error_reporting=E_ALL oraz log_errors=On. Pamiętaj, aby wyłączyć wyświetlanie błędów w środowiskach produkcyjnych.
Jaka jest różnica między Apache a Nginx w przypadku PHP?
Apache używa mod_php do bezpośredniego przetwarzania PHP (PHP jest osadzone w procesie Apache), podczas gdy Nginx wymaga PHP-FPM (FastCGI Process Manager) do obsługi żądań PHP (PHP działa jako osobna usługa). Zobacz sekcję „Wybór między Apache a Nginx” powyżej, aby zobaczyć szczegółową tabelę porównawczą. Oba podejścia działają dobrze; wybierz w zależności od swoich potrzeb związanych z wydajnością, znajomością technologii i istniejącą infrastrukturą.
Czy mogę zainstalować wiele wersji PHP na tym samym systemie?
Tak, korzystając z narzędzi takich jak phpenv lub phpbrew. Jednak w większości scenariuszy deweloperskich wystarcza jedna wersja PHP. Używaj menedżerów wersji, gdy potrzebujesz testować aplikacje na różnych wersjach PHP.
Wniosek
Masz teraz w pełni skonfigurowane środowisko programistyczne PHP 8.1 na Ubuntu z obsługą serwerów internetowych Apache i Nginx. Twoja konfiguracja obejmuje niezbędne rozszerzenia PHP, Composer do zarządzania zależnościami oraz odpowiednią konfigurację do lokalnego rozwoju.
Zanim rozpoczniesz kolejny projekt, rozważ skonfigurowanie Zintegrowanego Środowiska Programistycznego (IDE), takiego jak VS Code, z rozszerzeniami PHP do podświetlania składni, debugowania i wsparcia IntelliSense.
Gdy Twoje środowisko jest gotowe, możesz dalej zgłębiać rozwój w PHP:
- Poznaj podstawy PHP w kursie Jak pracować z łańcuchami znaków w PHP
- Twórz interfejsy API przy użyciu Jak korzystać z interfejsów Web API w PHP
- Zrozum funkcje w Jak korzystać z funkcji w PHP
- Skonfiguruj bazy danych z instrukcją instalacji i używania PostgreSQL na Ubuntu
Do wdrożeń produkcyjnych warto rozważyć użycie platformy Linux-Console.net App Platform, aby wdrażać aplikacje PHP bezpośrednio z GitHub z automatycznym skalowaniem i certyfikatami SSL.
Dziękujemy za naukę z społecznością Linux-Console.net.

