Twój katalog internetowy, czyli $_SERVER['DOCUMENT_ROOT']
w PHP to folder w systemie plików, na który wskazuje serwer WWW (w tym przypadku Apache) dla konkretnego hosta.
Na przykład, jeśli umieścisz ten kod w pliku index.php i odwiedzisz nazwę swojej domeny (lub nazwę subdomeny), zostaniesz poinformowany o Twoim katalogu głównym.
<?php
header("Content-Type: text/plain;charset=UTF-8");
die($_SERVER['DOCUMENT_ROOT']);
?>
Powinien powiedzieć coś w stylu /home/some_user/public_html
lub /var/www
. W takim przypadku chcesz utworzyć ścieżkę, która nie znajduje się w tym katalogu.
Na przykład:/home/some_user/config
lub /var/webconfig
.
NIE chcesz go przechowywać w /home/some_user/public_html/config
(zwróć uwagę na public_html) lub /var/www/webconfig
(zauważ, że jest to podfolder /var/www
)
Pomysł przechowywania danych poza głównym katalogiem sieci polega na tym, że atakujący nie może przejść do http://yoursite.com/config/mysql.txt
i uzyskaj swoje hasła. Ataki LFI i Directory Traversal nie są objęte zakresem tej inicjatywy.
Nie należy również sprawdzać żadnych poufnych informacji (poświadczeń bazy danych, kluczy szyfrowania itp.) do kontroli wersji. Kiedykolwiek.
Jak uzyskać do nich dostęp z PHP?
To zależy od tego, jak zakodowana jest twoja konfiguracja.
<?php
$config = parse_ini_file('/home/some_user/config/mysql.ini');
// OR
$config = json_decode('/home/some_user/config/mysql.json');
// OR
require_once '/home/some_user/config/mysql_config.php';
?>