Serwer Apache jest niezwykle elastyczny i pozwala na wiele różnych konfiguracji, które mogą wpływać na sposób działania aplikacji PHP. W tym rozdziale omówię kilka kluczowych aspektów konfiguracji serwera Apache, takich jak zmiana portu, ładowanie modułów, konfiguracja virtual hosts oraz zmiany w ustawieniach PHP. Zawiera również fragmenty kodu w odpowiednich blokach.
1. Zmiana portu serwera Apache
Domyślnie serwer Apache nasłuchuje na porcie 80 – jest to domyślny port dla HTTP (443 to domyślny port dla HTTPS), ale w przypadku, gdy ten port jest już zajęty przez inny serwis, możemy zmienić port, na którym będzie działał Apache. W tym celu edytujemy plik konfiguracyjny httpd.conf
. Otwórz plik httpd.conf
(np. w XAMPP znajduje się on w folderze apache/conf
). Wyszukaj linię:
Zmieniając wartość 80
na inny numer portu (np. 8080
), uzyskamy dostęp do Apache na nowym porcie:
Po zapisaniu pliku konfiguracyjnego i restarcie Apache, możemy przejść do przeglądarki i wpisać http://localhost:8080
, aby sprawdzić, czy serwer działa poprawnie.
2. Ładowanie modułów w Apache
Apache działa w sposób modułowy, co oznacza, że możemy załadować dodatkowe moduły, które rozszerzają jego funkcjonalność. Ważnym modułem dla PHP jest php_module
, który umożliwia obsługę skryptów PHP. Aby sprawdzić lub dodać załadowanie tego modułu, otwieramy plik httpd.conf
i upewniamy się, że znajduje się tam linia:
Gdy zainstalowaliśmy pakiet XAMPP z php w wersji 8, a nie 7, to odpowiednie oznaczenia powinny być inne.
W przypadku, gdy nie jest ona obecna lub jest zakomentowana (zaczyna się od #
), należy ją odkomentować lub dodać w odpowiednim miejscu. Jeśli chcemy włączyć inne moduły, na przykład mod_rewrite
, dodajemy lub odkomentowujemy następujący wpis:
Po zapisaniu pliku konfiguracyjnego należy zrestartować Apache.
3. Konfiguracja Virtual Hosts
Kiedy pracujemy nad kilkoma projektami na tym samym serwerze, warto skonfigurować virtual hosts, które pozwalają na przypisanie różnych domen lub subdomen do różnych katalogów na serwerze. Aby skonfigurować virtual hosts, otwieramy plik httpd-vhosts.conf
, który znajduje się w katalogu konfiguracyjnym Apache (np. apache/conf/extra/httpd-vhosts.conf
w XAMPP). Przykład konfiguracji dwóch virtual hosts:
Następnie musimy edytować plik hosts
, który znajduje się w systemie operacyjnym, aby przypisać odpowiednie domeny do lokalnych adresów IP:
Po zapisaniu tych zmian w pliku hosts
, uruchamiamy ponownie serwer Apache. Teraz, wpisując w przeglądarkę http://projekt1.local
lub http://projekt2.local
, Apache będzie wiedział, który katalog obsługiwać.
4. Zmiana ustawień PHP w pliku php.ini
Plik php.ini
odpowiada za ustawienia PHP. Aby dostosować PHP do naszych potrzeb, możemy zmieniać ustawienia takie jak limit pamięci, maksymalny czas wykonania skryptów czy wyświetlanie błędów. Plik php.ini
znajduje się zwykle w katalogu instalacyjnym PHP (np. xampp/php/php.ini
w XAMPP). Oto kilka przykładów ustawień, które możemy zmienić:
- Zmiana limitu pamięci: Jeśli napotykasz problemy związane z pamięcią w PHP, możesz zwiększyć wartość
memory_limit
. Aby to zrobić, znajdź linię:i zmień ją na wyższą wartość, np.:
- Zmiana limitu czasu wykonania skryptu: Jeśli Twoje skrypty PHP potrzebują więcej czasu na wykonanie, zmień wartość
max_execution_time
w plikuphp.ini
. Przykład:Dzięki tej zmianie PHP będzie czekać do 300 sekund (5 minut) na zakończenie skryptu.
- Włączanie wyświetlania błędów: Aby łatwiej debugować aplikację PHP, możesz włączyć wyświetlanie błędów, ustawiając
display_errors
naOn
:
Po dokonaniu zmian w pliku php.ini
, pamiętaj, aby zrestartować Apache, aby nowe ustawienia zaczęły obowiązywać.
5. Bezpieczeństwo serwera Apache
Ważnym aspektem konfiguracji Apache jest zapewnienie odpowiedniego poziomu bezpieczeństwa. Przykładem może być blokowanie dostępu do niektórych katalogów, które nie powinny być dostępne publicznie (np. katalogi z plikami konfiguracyjnymi). Aby zablokować dostęp do określonych katalogów, w pliku httpd.conf
możemy dodać dyrektywę:
To blokuje dostęp do katalogu Apache. Możemy w ten sposób zabezpieczyć katalogi, które zawierają wrażliwe dane lub pliki konfiguracyjne.