Apache, PHP i MySQL - instalacja i konfiguracja

Instalacja Apache

Ściągamy instalator Apache: Win32 Binary (MSI Installer): apache_x.x.xx-win32-x86-no_ssl.msi ze strony (x.x.xx oznacza numer wersji) Tworzymy folder na dysku C, w którym umieścimy wszystko tzn. serwer Apache, php i MySql. Niech będzie to np. C:\serwer Włączamy instalator apache_x.x.xx-win32-x86-no_ssl.msi. Pojawia się poniższe okno. Po kliknięciu next pojawia się kolejne okno. Akceptujemy licencję i klikamy next. W poniższym oknie wpisujemy localhost, localhost, [email protected], zostawiamy opcję for All users port 80 i klikamy next. Następnie wybieramy Custom i klikamy next. Klikamy przycisk change aby wybrac lokalizację instalacji. Wybieramy lokalizację C:\serwer i klikamy ok, a następnie next. Klikamy Install. Serwer się instaluje. Po zakończeniu instalacji klikamy finish. W zasobniku systemowym powinna pojawić się ikonka wskazująca na działanie Apache. Po wpisaniu adresu http://localhost jeśli nasz serwer działa poprawnie powinna się pojawić poniższa strona.

Instalacja PHP

Pobieramy ze strony php.net plik php-x.x.x-Win32.zip (x.x.x to numer wersji php), a następnie wypakowujemy do folderu C:\serwer\php. Znajdujemy plik php.ini-dist i zmieniamy nazwę na php.ini. Następnie otwieramy ten plik i zmieniamy następujące linie. Należy odszukać doc_root = i zamienić na: doc_root = C:\serwer\Apache2\htdocs. Następnie linię extension_dir = "./" zmieniamy na extension_dir = C:\serwer\php\ext. Zapisujemy zmiany i zamykamy plik.

Konfiguracja Apache pod kątem php

Należy przejść do katalogu C:\serwer\Apache2\conf i otworzyć plik httpd.conf w jakimś edytorze tekstowym. Trzeba zlokalizować i zmienić następujące linie w pliku httpd.conf:
  • Znajdujemy sekcję LoadModule i na samej górze tej sekcji dodajemy: LoadModule php5_module "C:/serwer/php/php5apache2.dll"
  • Znajdujemy sekcję AddType, a na samej górze sekcji dopisujemy: AddType application/x-httpd-php .php
  • Na końcu zawartości pliku należy jeszcze dopisać: PHPIniDir "C:/serwer/php/" – musi być zamykający slash no końcu ścieżki. Zapisujemy zmiany w pliku i zamykamy go. Następnie restartujemy Apache. Wchodzimy do Start > Programy > Apache HTTP Server > Control Apache Server i klikamy Restart

Instalacja MySQL

Wchodzimy na stronę i pobieramy plik zip. Rozpakowujemy plik mysql-x.x.xx-win32.zip. Następnie wewnątrz folderu mysql-x.x.xx-win32 podwójnie klikamy na Setup.exe. Teraz postępujemy jak w poniższych screenach. Klikamy next. Wybieramy Custom i klikamy next. Wybieramy change, a następnie ustalamy ścieżkę na C:\serwer\mysql i klikamy next. W następnym oknie które się pojawi klikamy ok, a potem na Install. Gdy pojawi się poniższe okno klikamy next. Gdy instalacja się zakończy można skonfigurować MySQL. Opcja Configure the MySQL Server now powinna być zaznaczona. Klikamy finish aby rozpocząć konfigurację.

Konfiguracja MySQL

Na pierwszym oknie konfiguracji klikamy next. Wybieramy opcję Detailed Configuration i klikamy next. Wybieramy Developer Machine i klikamy next. Następnie wybieramy Multifunctional Database i klikamy next. W poniższym oknie zostawiamy wszystkie domyślne wartości i klikamy next. Wybieramy Decision Support (DSS)/OLAP i klikamy next.
Zostawiamy obydwie opcje zaznaczone oraz domyślny port 3306 i klikamy next. Wybieramy opcję Best Support For Multilingualism i klikamy next. Wybieramy Include Bin Directory in Windows PATH, resztę opcji pozostawiamy jako domyślne i klikamy next. Zaznaczamy opcję Modify Security Settings, wpisujemy hasło dla root, klikamy next. Nie zaznaczamy opcji Enable Root Access from remote machines oraz Create An Anonymous Account. Nie powinniśmy tworzyć anonimowych użytkowników. Opcję Enable Root Access from remote machines zaznaczamy jako aktywną tylko wtedy, gdy chcemy kontrolować serwer bazy danych z zewnątrz. Klikamy Execute, żeby zatwierdzić naszą konfigurację. Następnie klikamy Finish, aby zakończyć konfigurację. Teraz należy otworzyć plik php.ini z katalogu C:\serwer\php i usunąć komentarz z linii ;extension=php_mysql.dll oraz ;extension=php_mysqli.dll. Robimy to poprzez usunięcie średników na początku linii. Zapisujemy zmiany w pliku i zamykamy go. Restartujemy komputer. Nasza instalacja jest już kompletna. Teraz zainstalujemy jeszcze kilka dodatków.

Instalacja phpmyadmin

Najpierw należy wejść na stronę i pobrać archiwum. Później wypakowujemy pliki phpmyadmin (phpMyAdmin-x.x.x-all-languages.tar) do folderu C:\serwer\Apache2\htdocs. Zmieniamy nazwę wypakowanego folderu na pma. W pliku pma\libraries\config.default.php wprowadźmy hasło administratora serwera MySQL:
$cfg['Servers'][$i]['password'] = 'haslo';
To samo hasło, które było wprowadzone podczas instalacji MySQL dla root. Uruchom przeglądarkę, wprowadź adres localhost i odwiedź plik index.php z folderu pma (http://localhost/pma/index.php). Jeśli wszystko działa poprawnie powinno się pokazać okno phpmyadmina. Aby phpmyadmin włączał się po wpisaniu adresu http://localhost/pma. Należy skonfigurować ustawienia w pliku httpd.conf dotyczące ustawienień domyślnych plików indeksowania. Może zajść potrzeba dodania rozszerzenia mbstring do php. Należy więc odkomentować linię: ;extension=php_mbstring.dll w pliku php.ini i zrestartować Apache.

Konfiguracja użytkowników MySQL

Wchodzimy do phpmyadmina i wybieramy bazę mysql, następnie tabelę user, a potem przeglądaj. Jeśli widnieją anonimowi użytkownicy lub tacy, dla których user=root, a host='%' bez hasła, usuwamy ich.

Instalacja PEAR

Rozpakuj pliki PEAR-x.x.x.tgz oraz DB-x.x.x.tgz. Wypakowaną zawartość przekopiuj do folderu c:\php\PEAR w taki sposób, by lokalizacja plików PEAR.php i DB.php była następująca: c:\serwer\php\PEAR\PEAR.php c:\serwer\php\PEAR\DB.php Zmodyfikuj ścieżki dostępu. W pliku php.ini wpis: include_path = ".;" zastąp wpisem: include_path = ".;c:\serwer\php\PEAR" Należy teraz zrestartować serwer Apache.

Instalacja Apache, Php i Mysql na Linuxie

Sposób instalacji powyższych składników zależy głównie od dystrybucji. Dokonuje się tego za pomocą konsoli lub menadżera pakietów. Na przykład w dystrybucji Mandriva jest to bardzo proste. Wystarczy uruchomić konsolę z prawami administraatora i użyć poniższych poleceń.
urpmi apache
urpmi php
urpmi mysql
Instalacja na Ubuntu. Najpierw aktualizujemy repozytoria.
sudo apt-get update
Następnie wklepujemy poniższe linijki.
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server
Musimy jeszcze zainstalować dodatki, które umożliwią komunikację Apache2 z MySQL i dodatku który umożliwi komunikację skryptów PHP z bazami MySQL.
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
Na koniec wykonujemy restart Apache, aby wczytać wszystkie moduły.
sudo /etc/init.d/apache2 restart

Instalacja i konfiguracja XAMPP

Jeśli nie chcemy instalować Apache, PHP i MySQL oddzielnie możemy skorzystać z instalatorów wykonujących kompleksową instalację Apache, PHP i MySQL oraz innych dodatków. Wykonują one również podstawową konfigurację za nas. Rozbudowana lista takich instalatorów znajduje się na stronie http://www.hotscripts.com. Najpopularniejszymi takimi pakietami są: KrasnalServ, PHPTriad, FoxServ, XAMPP. Ja przedstawię instalację i konfigurację XAMPP-a. XAMPP jest darmowym wieloplatformowym pakietem, składającym się z serwera Apache, bazy danych MySQL i interpreterów dla skryptów napisanych w PHP i Perlu. XAMPP zawiera: Apache, PHP, MySQL, phpMyAdmin, PEAR, FileZilla FTP Server, Mercury Mail i inne. Pobieramy go ze strony. Mamy do wyboru wersję na różne systemy operacyjne. Przedstawię instalację dla Windows. Pobieramy plik instalacyjny xampp-win32-x.x.x-installer.exe, gdzie x.x.x oznacza aktualną wersję i uruchamiamy go. Pojawia się okienko wyboru języka. Wybieramy polski (jeśli istnieje) i klikamy ok. W następnym oknie przechodzimy dalej. Teraz wybieramy katalog, w którym chcemy zainstalować XAMPP-a. Następnie określamy podstawowe opcje instalacji. Dotyczą one między innymi tworzenia ikony na pulpicie, tworzenie folderu w menu start oraz instalacji poszczególnych składników jako serwisów. Po zakończeniu instalacji klikamy przycisk zakończenia. Teraz włączamy panel kontrolny XAMPP-a (XAMPP Control Panel). Pojawi się okno umożliwiające zarządzanie XAMPP-em. Uruchamiamy Apache i MySQL klikając na odpowiednie przyciski start. Teraz wystarczy wpisać do przeglądarki adres http://localhost i zobaczymy stronę powitalną XAMPP-a. Na tej stronie mamy dostęp np. do phpmyadmina. Po kliknięciu stan po lewej stronie nawigacji ujrzymy informacje o zainstalowanych usługach. Jeśli zobaczymy poniższy rysunek to znaczy, że XAMPP działa poprawnie. Przejdziemy teraz do konfiguracji XAMPP-a. Zaczniemy od ustawienia podstawowych zabezpieczeń. Sprawdzić poszczególne zabezpieczenia możemy przechodząc na stronę bezpieczeństwo. Dla ustawienia zabezpieczeń przechodzimy na stronę http://localhost/xampp/xamppsecurity.php. Ustawiamy hasła dla klienta SQL (hasło dla root) oraz do głównego katalogu (XAMPP Directory Protection). Teraz aby mieć dostęp do strony http://localhost musimy podać użytkownika i hasło. Podobnie aby zalogować się do phpMyAdmina musimy podać hasło dla użytkownika root. Teraz możemy usunąć anonimowych użytkowników dla bazy MySQL, tak jak zostało to opisane wcześniej (Konfiguracja użytkowników MySQL). Wszystkie pliki i katalogi do wyświetlenia umieszczamy w katalogu htdocs. Podstawowe katalogi XAMPP-a to:
  • \xampp\apache – katalog serwera Apache,
  • \xampp\mysql – folder MySQL,
  • \xampp\php – katalog php,
  • \xampp\phpmyadmin – katalog phpmyadmin,
  • \xampp\tmp – katalog plików tymczasowych.
Pliki konfiguracyjne w XAMPP-ie znajdują się w następujących folderach:
  • xampp\apache\conf\httpd.conf – podstawowy plik konfiguracyjny Apache,
  • xampp\php\php.ini – plik konfiguracyjny php,
  • xampp\mysql\bin\my.ini – plik konfiguracyjny MySQL,
  • xampp\phpMyAdmin\config.inc.php – konfiguracja phpMyAdmina.

Instalacja XAMPP na Linuxie

Instalacja XAMPP-a na Linuxie jest bardzo prosta. Pobieramy paczkę tar.gz dla Linuxa. Otwieramy konsolę i logujemy się jako superużytkownik. Następnie rozpakowujemy archiwum do katalogu /opt poniższym poleceniem.
tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt
To wszystko. Xampp jest zainstalowany w katalogu /opt/lampp. Włączamy go używając polecenia
/opt/lampp/lampp start
Więcej informacji można znaleźć na stronie xamppa.

Konfiguracja Apache

Plik konfiguracyjny Apache httpd.conf znajduje się w katalogu C:\serwer\Apache2\conf (dla naszej instalacji). W XAMPP-ie znajduje się on w folderze xampp\apache\conf. Przedstawię podstawowe dyrektywy w pliku. Dyrektywa DocumentRoot umożliwia ustawienie ścieżki do katalogu, w którym będziemy zamieszczać nasze pliki. DirectoryIndex pozwala na określenie, które pliki będą tzw. indeksami katalogów. Ta dyrektywa określa, jak będzie zachowywał się serwer, jeśli zostanie podana w adresie jedynie nazwa katalogu, a nie dokładna nazwa pliku. Zapis
DirectoryIndex index.html, index.php, glowna.html
oznacza, że w pierwszej kolejności będzie szukał pliku index.html. Jeżeli go znajdzie wyświetli go, a jeżeli nie, będzie szukał kolejno plików występujących po przecinku. Dopiero gdy nie znajdzie żadnego z plików zostanie wyświetlona zawartość katalogu. <Directory> i </Directory> jest używane do zawarcia w jednej grupie dyrektyw, które będą miały zastosowanie do katalogów i podkatalogów danego katalogu. W poniższej dyrektywie określamy parametry katalogu, w którym umieszczamy nasze pliki.
<Directory "C:/serwer/Apache2/htdocs">
# Opcje indeksowania katalogów: "None", "All", "Indexes", "Includes", #"FollowSymLinks"
# "ExecCGI" lub "MultiViews"
    Options Indexes FollowSymLinks
# tu możemy określić, co serwer zrobi z opcjami z pliku .htaccess, można pominąć,
# zastąpić inne opcje: "None",  "Options", "FileInfo", "AuthConfig", "Limit" 
AllowOverride All        
# określamy kto ma dostęp do serwera
    Order allow,deny
    Allow from all
</Directory>
Domyślnie w Apache'u ustawiony jest dostęp do <Directory /> Allow from all (dla wszystkich). To oznacza, że Apache będzie przesyłał dowolny plik podany w URL'u. Zalecana jest zmiana tego ustawienia poprzez
<Directory />
     AllowOverride All
     Order Deny,Allow
     Deny from All
 </Directory>
i unieważnienie tego dla katalogu który chcesz udostępnić. Jeśli chcemy, aby dostęp do serwera miały tylko komputery z sieci lokalnej, musimy dodać pomiędzy <Directory "C:/serwer/Apache2/htdocs"> a </Directory> następujący wpis:
Order Deny, Allow
Deny from all
Allow from 192.168.1.0/24
Słowo Order decyduje o kolejności przetwarzania dyrektyw Allow i Deny. Najpierw blokujemy dostęp dla każdego (Deny from all), a następnie zezwalamy na dostęp tylko komputerom z sieci lokalnej. Można stosować dowolną kombinację dyrektyw Deny i Allow, przypisując im różne wartości (nazwy domen, adresy IP lub ich zakres). Uprawnienia dostępu modyfikujemy dla każdego katalogu na serwerze z osobna. Dyrektywa AllowOverride, którą umieszczamy wewnątrz Directory, decyduje czy można modyfikować pewne ustawienia serwera z poziomu pliku .htaccess. Jeżeli widnieje wpis
AllowOverride None
pliki .htaccess nie będą akceptowane. Jeżeli chcemy zezwolić na ich przetwarzanie należy zmienić jej wartość z None na All. Innym parametrem jest AuthConfig. Oznacza, że pliki .htaccess będą przetwarzane, ale tylko te dyrektywy, które służą do autoryzacji dostępu. .htaccess - domyślna nazwa pliku konfiguracyjnego serwera Apache, który umożliwia zmianę konfiguracji dla konkretnego katalogu. Plik może zostać utworzony w każdym katalogu, umożliwiając dodanie nowych lub zmianę istniejących dyrektyw ustawionych w głównym pliku konfiguracyjnym takich jak: przekierowania, własne strony błędów, blokady dostępu dla wybranych IP, autoryzację loginem i hasłem i wiele innych. Zmienione ustawienia obowiązują dla danego katalogu jak i dla wszystkich podkatalogów, jeśli tylko dany podkatalog nie jest skonfigurowany jako osobny podserwer. Dyrektywa Options decyduje, które z właściwości serwera są dostępne w konkretnym katalogu. Jeśli ustawimy None to w tym przypadku żadna z dodatkowych właściwości serwera nie jest włączona. All oznacza wszystkie opcje z wyjątkiem MultiViews. ExecCGI pozwala na uruchamianie skryptów CGI. FollowSymLinks – serwer będzie zwracał uwagę na symboliczne linki w katalogu. Opcja Indexes oznacza, że zezwalamy na wyświetlanie zawartości katalogu, który nie posiada DirectoryIndex (np. index.php). Zabezpieczając Apache’a możemy zastosować wpis w sekcji Directory.
Options –Indexes
oznaczający blokowanie wyświetlania zawartości katalogów, gdy nie posiadają plików startowych (index.php, index.html itp.). Przejdźmy teraz do kolejnych dyrektyw w pliku httpd.conf. Dyrektywa ServerRoot określa katalog, w którym zainstalowany jest serwer WWW np.:
ServerRoot "C:/serwer/Apache2"
Zapis Listen 80 oznacza, że serwer będzie prowadził nasłuch z portu 80. Dyrektywa DefaultType określa domyślny typ MIME pliku, jakiego używa serwer, gdy żądany dokument jest nieznanego typu np.:
DefaultType text/plain
Dyrektywa ErrorLog ustawia nazwę pliku gdzie serwer będzie przechowywał informacje o błędach, o ile takie wystąpią. Możemy również dodać dyrektywę <Files>, która umożliwia kontrolę dostępu poprzez nazwę pliku. Na przykład poniższy zapis
<Files .htaccess>
    Order allow,deny
    Deny from all
</Files>
oznacza całkowite ograniczenie dostępu do plików o nazwie .htaccess. Sekcja <IfModule test>...</IfModule> jest używana do zaznaczenia dyrektyw warunkowych. Dyrektywy umieszczone wewnątrz IfModule wykonywane są tylko kiedy test jest prawdziwy. Jeżeli test jest fałszywy, wszystko pomiędzy startem i końcem znaczników jest ignorowane. Dyrektywa AccessFileName określa nazwę lokalnego pliku konfiguracyjnego. Domyślny zapis to
AccessFileName .htaccess
Ustawienie dyrektywy KeepAlive On zezwala na więcej niż jedno połączenie z jednego komputera. MaxKeepAliveRequests określa maksymalną liczbę połączeń z jednego komputera. Gdy dyrektywa ServerTokens jest ustawiona na Full Apache podaje pełne informacje o sobie w nagłówku http - system na którym pracuje, numer swojej wersji oraz jakie ma włączone ważniejsze moduły. Jeśli nie chcemy aby serwer demaskował się przed wszystkimi np. ze względów bezpieczeństwa, możemy zmusić serwer do przedstawiania się po prostu jako Apache. W tym celu musimy ustawić odpowiednie dyrektywy:
ServerTokens Prod
# dodatkowo można wyłączyć sygnaturkę:
ServerSignature Off
Dla poznania lepiej innych dyrektyw serwera Apache odsyłam do dokumentacji.

Konfiguracja PHP

Najprościej konfigurację PHP zmienić za pośrednictwem pliku php.ini. W naszej instalacji znajduje się on w katalogu C:\serwer\php, a w XAMPP-ie w folderze xampp\php\bin. Plik php.ini zawiera konfigurację interpretera PHP obowiązującą w całym systemie. Kiedy serwer rozpoczyna przetwarzanie danych, interpreter PHP odczytuje plik php.ini i odpowiednio dostosowuje ustawienia konfiguracyjne. W pliku php.ini wiersze rozpoczynające się znakiem średnika (;) są komentarzami. Przykładowym wierszem konfiguracyjnym jest:
error_reporting  =  E_ALL & ~E_NOTICE
Dyrektywa error_reporting jest określona przez połączenie wbudowanych stałych z operatorami logicznymi. Kontroluje ona jakie rodzaje błędów będą zgłaszane przez interpreter PHP. Na przykład wiersz error_reporting = E_ALL & ~E_STRICT ustawia error_reporting na E_ALL, a nie E_STRICT. Operatorami, z których można skorzystać są: & (i), | (lub) oraz ~ (nie). E_ALL oznacza wszystkie błędy oprócz uwag, a E_STRICT ścisłe uwagi. Do dyspozycji mamy również następujące stałe: E_PARSE (błędy składni), E_ERROR (błędy krytyczne), E_WARNING (ostrzeżenia), E_NOTICE (uwagi). Opcja display_errors decyduje czy włączone zostaje drukowanie komunikatów diagnostycznych. Jeśli wartość jest ustawiona na On komunikaty będą wyświetlane, co ułatwia debugowanie skryptów.
display_errors = On
Na serwerze udostępniającym strony w Internecie należy — z powodów bezpieczeństwa — drukowanie komunikatów diagnostycznych wyłączyć (display_errors = Off). Przy ustawieniu poniższej dyrektywy możemy analizować błędy na podstawie dziennika błędów.
log_errors = On
W pliku php.ini znajdziemy również opcję register_globals. Ustawienie tej dyrektywy wyłączonej (Off) zabrania używania w skryptach zmiennych globalnych. Jest to powszechnie stosowana praktyka i nie jest zalecane, ze względów bezpieczeństwa, włączanie tej opcji. Zamiast tego powinniśmy w skryptach wykorzystywać tablice superglobalne.
register_globals = Off
Jeżeli zależy nam na wysokim poziomie bezpieczeństwa kosztem pewnych funkcji w PHP, możemy aktywować tryb bezpieczny (safe_mode). Aby to zrobić należy zmienić wartość w opcji safe_mode Off na On. Pełną listę funkcji blokowanych w trybie safe mode można zobaczyc na stronie. W celu poprawy bezpieczeństwa serwera możemy też za pomocą dyrektywy disable_functions zablokować pewne funkcje PHP. Funkcje oddzielamy od siebie przecinkami.
disable_functions = phpinfo, exec, passthru
Za wyłączenie i włączanie krótkich znaczników odpowiada opcja short_open_tag. Ustawienie jej na On włącza obsługę krótkich tagów postaci <? i ?>. Jeżeli ustawimy dyrektywę na Off trzeba będzie stosować wyłącznie znaczniki pełne tzn. <?php oraz >. Dyrektywa asp_tags odpowiada za możliwość stosowania znaczników ASP (<% i %>). PHP możemy też konfigurować poprzez edycję pliku konfiguracyjnego Apache’a httpd.conf oraz za pomocą pliku .htaccess. Wpis php_admin_value, php_value pozwala modyfikować te ustawienia, które przyjmują dowolne wartości. Natomiast dla opcji logicznych (On/Off) używamy php_admin_flag, php_flag np.:
php_admin_flag register_globals On
Opcje konfiguracji "admin" mogą być ustawiane tylko z głównych plików konfiguracyjnych Apache’a, nie z plików .htaccess. Inną funkcją zwiększającą bezpieczeństwo samego PHP jest open_basedir. Jej użycie oznacza, że wszystkie operacje na plikach będą ograniczone do wskazanego przez nas katalogu. Co ważne, open_basedir nabiera sensu dopiero wtedy, gdy połączymy ją z plikiem konfiguracyjnym httpd.conf dodając na przykład taki wpis:
<Directory "C:/serwer/Apache2/htdocs/jakis/katalog">
php_admin_value open_basedir "C:/serwer/Apache2/htdocs/jakis/katalog"
</Directory>
Skrypty uruchamiane z poziomu tego katalogu nie będą miały prawa dostępu do plików umieszczonych wyżej w strukturze katalogów. Moim zdaniem warto zwrócić uwagę na dyrektywę enable_dl. Jest ona jedynie przydatna przy pracy PHP jako moduł Apache. Możemy za jej pomocą włączać i wyłączać możliwość dynamicznego ładowania rozszerzeń PHP przez funkcję dl() zależnie od katalogu lub wirtualnego serwera. Głównym powodem wyłączania dynamicznego ładowania rozszerzeń jest kwestia bezpieczeństwa. Używając dynamicznych rozszerzeń możliwe jest ominięcie praktycznie wszystkich ograniczeń safe_mode i open_basedir. Dyrektywa extension określa, które dynamiczne ładowane rozszerzenia mają być wczytywane przy starcie PHP. Natomiast extension_dir katalog, w którym PHP powinno szukać dynamicznie ładowanych rozszerzeń. Opcja include_path określa listę katalogów, gdzie funkcje require(), include(), require_once() i include_once() będą szukały plików. Domyślną wartością tej dyrektywy jest . (tylko bieżący katalog). Katalogi są oddzielane znakiem średnika w systemach Windows i dwukropka w systemach UNIX. Poniżej przykładowe ścieżki include_path dla systemu Windows i UNIX.
include_path=".;c:\www\phplib"
include_path=.:/home/httpd/php-lib
Wartością dyrektywy session.save_path jest katalog, w którym przechowywane są pliki tymczasowe dotyczące sesji. Natomiast włączenie dyrektywy session.auto_start powoduje, że interpreter PHP uruchamia sesje na początku każdej strony. Nie trzeba więc wywoływać funkcji session_start(). Dyrektywa file_uploads odpowiada na pytanie, czy zezwolić na przekazywanie plików na serwer przy użyciu formularzy. Jeśli zezwalamy na upload plików przez użytkowników w pliku php.ini powinniśmy zawrzeć wpis:
file_uploads = On
Jak już na pewno zauważyłeś ustawienia PHP można zmieniać w pliku php.ini, w pliku httpd.conf oraz w pliku .htaccess. Jest jeszcze jedna metoda, mianowicie z poziomu skryptu PHP, za pomocą funkcji ini_set(). Poniżej widzimy przykład zmiany dyrektywy konfiguracyjnej za pomocą tej funkcji.
ini_set('error_reporting',E_ALL & ~E_STRICT);
Warto wiedzieć, że ustawienie niektórych dyrektyw jest niedozwolone z poziomu plików .htaccess lub httpd.conf. Natomiast wszystkie dyrektywy konfiguracyjne można ustawiać w pliku php.ini. Na stronie można znaleźć tabelę opisującą, które dyrektywy można ustawiać w odpowiednich miejscach.