Czy PHP ma plik konfiguracyjny? Co można w nim ustawią?

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

PHP posiada główny plik konfiguracyjny (php.ini), zawierający szereg ustawień, dzięki którym możemy dostosować swoją kopię do własnych wymagań.

Opcje języka

short_open_tag (boolean)

Zezwolenie na korzystanie z tagów "krótkich" tzn. <? ?> Jeżeli zostanie to wyłączone, PHP będzie przetwarzać kod tylko między <?php a ?>

asp_tags (boolean)

Zezwolenie na korzystanie z tagów otwierających w stylu ASP (<% %>)

allow_call_time_pass_reference (boolean)

Ograniczenia

memory_limit (integer)

Maksymalna ilość pamięci która może zostać wykorzystana przez skrypt. Jeżeli ustawisz -1, usuniesz ograniczenie.

Data Handling

track_vars (boolean)

variables_order (string)

register_globals (boolean)

Dyrektywa register_globals przyjmuje 2 wartości domyślnie jest to 0 lub 1, jednak dozwolone są też wartości off oraz on, które odpowiadają odpowiednia za wyłączenie lub włączenie tej opcji.

Opcja odpowiada za rejestrowanie danych pochodzących z formularzy, sesji, ciastek czy serwera jako zmienne globalne.

Niepoprawny język.

Musisz wybrać język w następujący sposób: <source lang="html4strict">...</source>

Języki obsługiwane w podświetlaniu składni:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


<form method="get" action="odbierz_dane.php">
	<input type="submit" value="Wyślij" />
	Imię: <input type="text" name="imie" value="" />
</form>
<?php
/**
 *Dane odebrane za pomocą zmiennej superglobalnej.
 */
echo $_GET['imie']; //Wyświetli dane odebrane z formularza
 
/**
 *Jeśli mamy włączoną dyrektywę register_globals to możemy osiągnąć to samo tak:
 */
echo $imie;
?>

Jednak dyrektywa niesie ze sobą niemałe niebezpieczeństwo dla niewłaściwie napisanych aplikacji. Popatrzmy na przykład:

<?php
/**
 *Sesja z imieniem użytkownika nosi nazwę $_SESSION['imie'], czyli
 *$imie(dla włączonych register_globals) czyli tak samo jak pole formularza.
 *Sesja jest ustalana wcześniej niż dane z formularza
 */
	$zapytanie = mysql_query("SELECT * FROM uzytkownicy WHERE imie=\''.$imie.'\'");
	$uzytkownik = mysql_fetch_assoc($zapytanie);
?>

Mieliśsmy na celu pobranie danych z sesji i za ich pomocą wybrać odpowiedni rekord, jednak można odpowiednio spreparować formularz który nadpisze dane z sesji i będzie można pobrać z naszej bazy danych dowolne dane.


Dyrektywa register_globals została domyślnie wyłączona w PHP wersji 4.2.0, uległa depracjacji w PHP 5.3.0 a została usunięta z wersją PHP 5.4.0

Wartości

ON lub OFF

Przykład

Najprostszym przykładem będzie dostęp do zmiennych wysyłanych metodą GET.

// domena.pl/index.php?zmienna=adam
// Zamiast pisać
echo $_GET['zmienna'];
// możemy napisać
echo $zmienna;

Z włączonym register_globals oba przykłady wypiszą "adam" Przy wyłączonym, zadziała tylko pierwszy, przy drugim dostaniemy błąd E_NOTICE o braku zmiennej.

Domyślnie

Domyślnie wyłączone ze względów bezpieczeństwa.

register_argc_argv (boolean)

post_max_size (integer)

Wartość

Wartością jest liczba wyrażona w K, KB, MB.

Przykład

Np. 2 MB post_max_size = 2MB lub post_max_size = 2048KB

auto_prepend_file (string)

Określa nazwę pliku, który jest parsowany jako pierwszy, przed jakimkolwiek innym plikiem, do którego serwer odwołuje się bezpośrednio, lub który jest dołączany w kodzie skryptu za pomocą funkcji include() lub podobnych. dołączany plik musi się znajdować w katalogu określonym w ścieżce podanej w include_patch. Jeśli żaden plik nie powinien być dołączony, auto_prepend_file nie przyjmuje żadnej wartości (domyślnie), lub wartość none.

default_mimetype (string)

default_charset (string)

Domyślne kodowanie strony tworzonej w locie.

always_populate_raw_post_data (boolean)

Ścieżki i Katalogi

include_path (string)

doc_root (string)

user_dir (string)

extension_dir (string)

extension (string)

cgi.fix_pathinfo (boolean)

cgi.force_redirect (boolean)

cgi.redirect_status_env (string)

fastcgi.impersonate (string)

cgi.rfc2616_headers (int)

File Uploads

file_uploads (boolean)

upload_tmp_dir (string)

upload_max_filesize (integer)

Maksymalny rozmiar uploadowanego pliku (w bajtach)

General SQL

sql.safe_mode (boolean)

Ustawienia Debugera

debugger.host (string)

debugger.port (string)

debugger.enabled (boolean)

Wiki letter w.png To jest tylko zalążek artykułu. Jeśli możesz, rozbuduj go.



Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo