Czym są disable_functions?
Disable_functions to dyrektywa konfiguracyjna w pliku php.ini, która pozwala na wyłączenie określonych funkcji PHP. Wyłączenie tych funkcji może pomóc w zwiększeniu bezpieczeństwa serwera, uniemożliwiając wykonanie potencjalnie niebezpiecznych operacji, dlatego domyślne są one wyłączone na serwerze.
Oto spis wszystkich funkcji, które są domyślnie wyłączone: exec, system, passthru, shell_exec, proc_close, proc_open,dl, popen,show_source, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname.
Jak włączyć wybraną funkcję?
- Zaloguj się do panelu administracyjnego serwera na stronie panel.cal.pl.
- Z menu po lewej wybierz ’Dodatkowe funkcje’ > ’Select PHP version’.
- Wybierz ’Opcję’.
- Z listy funkcji odnajdź disable_functions.
Jeśli potrzebujesz wyłączyć daną funkcję wystarczy, że usuniesz nazwę z listy. Ta operacja nie wymaga zapisywania.
W każdej chwili w tym miejscu możesz ponownie dodać funkcję, aby ją dezaktywować.
Do czego służą konkretne funkcję w disable_functions?
W języku PHP istnieje wiele funkcji, które pozwalają na interakcję z systemem operacyjnym oraz wykonywanie różnych operacji na poziomie systemowym. Oto przegląd wymienionych funkcji i ich zastosowań:
- exec: Wykonuje polecenie systemowe i zwraca ostatnią linię wyjścia. Może także zwrócić całe wyjście jako tablicę.
exec('ls', $output, $return_var);
- system: Wykonuje polecenie systemowe, natychmiast wyświetla wynik i zwraca ostatnią linię wyjścia.
exec('ls', $output, $return_var);
- passthru: Wykonuje polecenie systemowe i natychmiast wyświetla surowe dane wyjściowe, bez żadnych modyfikacji.
passthru('ls');
- shell_exec: Wykonuje polecenie systemowe i zwraca całe wyjście jako ciąg znaków.
$output = shell_exec('ls');
- proc_close: Zamyka proces otwarty za pomocą
proc_open
i zwraca kod wyjścia procesu.
$process = proc_open('ls', $descriptorspec, $pipes); proc_close($process);
- proc_open: Otwiera proces i zwraca zasób procesu, który można manipulować za pomocą innych funkcji.
$process = proc_open('ls', $descriptorspec, $pipes);
- dl: Ładuje rozszerzenie PHP w trakcie działania skryptu.
dl('some_extension.so');
- popen: Otwiera proces do odczytu lub zapisu i zwraca wskaźnik pliku.
$handle = popen('ls', 'r');
- show_source: Wyświetla kod źródłowy skryptu PHP z kolorowaniem składni.
show_source('somefile.php');
- posix_kill: Wysyła sygnał do procesu (np. zabicie procesu).
posix_kill($pid, SIGTERM);
- posix_mkfifo: Tworzy FIFO specjalny plik (kolejkę).
posix_mkfifo('/tmp/myfifo', 0644);
- posix_getpwuid: Pobiera informacje o użytkowniku na podstawie jego UID.
$userinfo = posix_getpwuid(1000);
- posix_setpgid: Ustawia identyfikator grupy procesów dla danego procesu.
posix_setpgid($pid, $pgid);
- posix_setsid: Tworzy nową sesję i ustawia proces jako lider tej sesji.
posix_setsid();
- posix_setuid: Ustawia identyfikator użytkownika dla procesu.
posix_setuid($uid);
- posix_setgid: Ustawia identyfikator grupy dla procesu.
posix_setgid($gid);
- posix_seteuid: Ustawia efektywny identyfikator użytkownika dla procesu.
posix_seteuid($euid);
- posix_setegid: Ustawia efektywny identyfikator grupy dla procesu.
posix_setegid($egid);
- posix_uname: Zwraca informacje o systemie operacyjnym.
$system_info = posix_uname();
Należy pamiętać, że poniższe przykłady są jedynie demonstracjami i wymagają dostosowania do własnych potrzeb oraz specyfiki kodu. Funkcje te pozwalają na szeroką gamę interakcji i są przydatne w różnych zaawansowanych scenariuszach programistycznych. Jednak należy pamiętać, że mogą one stwarzać potencjalne zagrożenia bezpieczeństwa, dlatego należy ich używać ostrożnie.