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, admin@localhost, 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.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 mysqlInstalacja na Ubuntu. Najpierw aktualizujemy repozytoria.
sudo apt-get updateNastępnie wklepujemy poniższe linijki.
sudo apt-get install apache2 sudo apt-get install php5 sudo apt-get install mysql-serverMusimy 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-mysqlNa 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.
- 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 /optTo wszystko. Xampp jest zainstalowany w katalogu /opt/lampp. Włączamy go używając polecenia
/opt/lampp/lampp startWię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. ZapisDirectoryIndex index.html, index.php, glowna.htmloznacza, ż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/24Sł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 Nonepliki .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 –Indexesoznaczają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/plainDyrektywa 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 .htaccessUstawienie 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 OffDla 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_NOTICEDyrektywa 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 = OnNa 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 = OnW 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 = OffJeż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, passthruZa 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 OnOpcje 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-libWartoś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 = OnJak 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.