Διάφορα Directives Ρυθμίσεων

Αυτός δεν είναι πλήρης κατάλογος των PHP directives. Τα Directives μπορούν να βρεθούν στις κατάλληλες τοποθεσίες. Για παράδειγμα, οι πληροφορίες για τα session directives βρίσκονται στο κεφάλαιο για τα sessions.

Επιλογές του Httpd

Πίνακας 4-2. Επιλογές του Httpd

ΌνομαΠροεπιλογήΜεταβλητό
async_send"0"PHP_INI_ALL

Επιλογές Γλώσσας

Πίνακας 4-3. Επιλογές Ρυθμίσεων Γλώσσας και Άλλων

ΌνομαΠροεπιλογήΜεταβλητό
short_open_tagOnPHP_INI_SYSTEM|PHP_INI_PERDIR
asp_tagsOffPHP_INI_SYSTEM|PHP_INI_PERDIR
precision"14"PHP_INI_ALL
y2k_complianceOffPHP_INI_ALL
allow_call_time_pass_referenceOnPHP_INI_SYSTEM|PHP_INI_PERDIR
expose_phpOnPHP_INI_SYSTEM

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

short_open_tag boolean

Ορίζει αν η σύντομη μορφή (<? ?>) του open tag της PHP θα επιτρέπεται. Αν θέλετε να χρησιμοποιείτε την PHP σε συνδιασμό με XML, μπορείτε να απενεργοποιήσετε αυτή την επιλογή για να χρησιμοποιείτε το <?xml ?> inline. Αλλιώς, μπορείτε να το εκτυπώνετε με την PHP, για παράδειγμα: <?php echo '<?xml version="1.0"'; ?>. Επίσης αν είναι ανενεργοποιημένο, θα πρέπει να χρησιμοποιείτε την μεγάλη μορφή του PHP open tag (<?php ?>).

Σημείωση: Αυτό το directive επίσης επιρεάζει το "συντομογραφικό" <?=, το οποίο είναι ίδιο με το <? echo. Η χρήση αυτών των συντομεύσεων προϋποθέτει το short_open_tag να είναι ενεργοποιημένο.

asp_tags boolean

Επιτρέπει τη χρήση των ASP-like <% %> tags επιπρόσθετα στα συνηθισμένα <?php ?> tags. Αυτό συμπεριλμβάνει την σύντομη variable-value εκτύπωση <%= $value %>. Για περισσότερες πληροφορίες, δείτε το Βγαίνοντας από την HTML.

Σημείωση: Η υποστήριξη για tags του στυλ της ASP προστέθηκε στην έκδοση 3.0.4.

precision integer

Ο αριθμός των σημαντικών ψηφίων (significant digits) που θα παρουσιάζεται στους αριθμούς κινητής υποδιαστολής.

y2k_compliance boolean

Επιβάλλει year 2000 compliance (συμβατότητα) (θα έχει προβλήματα με μη συμβατούς browsers)

allow_call_time_pass_reference boolean

Ελέγχει κατά πόσον θα υπάρχει η ικανότητα να επιβάλλεται το πέρασμα με αναφορά (by reference) των ορισμάτων κατά τη κλήση μιας συνάρτησης. Αυτή η μέθοδος έχει ξεπεραστεί και πιθανόν να μην υποστηρίζεται σε μελλοντικές εκδόσεις της PHP/Zend. Η μέθοδος που υποστηρίζεται είναι να ορίζονται ποια ορίσματα θα περνιούνται by reference να βρίσκεται στον ορισμό της συνάρτησης. Ενθαρρύνεστε να δοκιμάσετε να απενεργοποιήσετε αυτή την επιλογή ώστε να σιγουρευτείτε πως τα script σας δουλεύουν για να δείτε ότι θα δουλεύουν και με μελλοντικές εκδόσεις της γλώσσας (θα λαμβάνετε μια προειδοποίηση κάθε φορά που το χρησιμοποιείτε και το όρισμα θα περνιέται by value αντί by reference).

Δείτε επίσης το Επεξήγηση Αναφορών.

expose_php boolean

Αποφασίζει αν η PHP θα φανερώνει το ότι είναι εγκατεστημένη στον server (π.χ. προσθέτοντας την υπογραφή της στον Web server header). Δεν αποτελεί ρίσκο ασφάλειας με οποιοδήποτε τρόπο, αλλά καθιστά ικανή την αναγνώριση του αν χρησιμοποιείτε PHP στον server σας ή όχι.

Περιορισμοί πόρων

Πίνακας 4-4. Περιορισμοί πόρων

ΌνομαΠροεπιλογήΜεταβλητό
memory_limit"8M"PHP_INI_ALL

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

memory_limit integer

Ορίζει το μέγιστο μέγεθος μνήμης σε bytes το οποίο επιτρέπεται να χρησιμοποιήσει ένα script. Αυτό βοηθά να αποφεύγεται το ενδεχόμενο φτωχά γραμμένα scripts να τρώνε όλη τη διαθέσιμη μνήμη σε ένα server. Για να χρησιμοποιήσετε αυτό το directive πρέπει να το ενεργοποιήσετε στη στιγμή του compile. Έτσι, η configure γραμμή θα περιείχε: --enable-memory-limit. Σημειώστε πως πρέπει να το ορίσετε σε -1 αν δεν θέλετε οποιοδήποτε όριο για τη μνήμη σας.

Δείτε επίσης: max_execution_time.

Χειρισμός Δεδομένων

Πίνακας 4-5. Επιλογές Ρυθμίσεων Χειρισμού Δεδομένων

ΌνομαΠροεπιλογήΜεταβλητό
track-vars"On"PHP_INI_??
arg_separator.output"&"PHP_INI_ALL
arg_separator.input"&"PHP_INI_SYSTEM|PHP_INI_PERDIR
variables_order"EGPCS"PHP_INI_ALL
register_globals"Off"PHP_INI_PERDIR|PHP_INI_SYSTEM
register_argc_argv"On"PHP_INI_PERDIR|PHP_INI_SYSTEM
post_max_size"8M"PHP_INI_SYSTEM|PHP_INI_PERDIR
gpc_order"GPC"PHP_INI_ALL
auto_prepend_file""PHP_INI_SYSTEM|PHP_INI_PERDIR
auto_append_file""PHP_INI_SYSTEM|PHP_INI_PERDIR
default_mimetype"text/html"PHP_INI_ALL
default_charset"iso-8859-1"PHP_INI_ALL
always_populate_raw_post_data"0"PHP_INI_SYSTEM|PHP_INI_PERDIR
allow_webdav_methods"0"PHP_INI_SYSTEM|PHP_INI_PERDIR

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

track_vars boolean

Όταν είναι ενεργοποιημένη, οι Environment, GET, POST, Cookie, και Server μεταβλητές μπορούν να βρεθούν στα global associative arrays $_ENV, $_GET, $_POST, $_COOKIE, και $_SERVER.

Σημειώστε πως από την PHP 4.0.3, το track_vars είναι πάντα ενεργοποιημένο.

arg_separator.output string

Ο διαχωριστής (separator) που χρησιμοποιείται στα URL που δημιουργούνται από τη PHP για να ξεχωρίζουν μεταξύ τους τα arguments.

arg_separator.input string

Λίστα από διαχωριστές(ή) που χρησιμοποιεί η PHP για να μετφράσει τα URL εισόδου σε μεταβλητές.

Σημείωση: Κάθε χαρακτήρας αυτού του directive θεωρείται ένας διαχωριστής (separator)!

variables_order string

Ορίζει τη σειρά της EGPCS (Environment, GET, POST, Cookie, Server) ανάλυσης μεταβλητών. Η προεπιλεγμένη ρύθμιση αυτού του directive είναι "EGPCS". Ορίζοντας το σε "GP", για παράδειγμα, θα κάνει την PHP να αγνοήσει τελείως τις μεταβλητές περιβάλλοντος (E), τα cookies and και τις μεταβλητές του server, και να κάνει overwrite όσες GET method μεταβλητές με τις POST-method μεταβλητές που έχουν το ίδιο όνομα.

Δείτε επίσης το register_globals.

register_globals boolean

Ορίζει αν θα καταχωρηθούν οι EGPCS (Environment, GET, POST, Cookie, Server) μεταβλητές σαν global μεταβλητές. Για παράδειγμα: Αν το register_globals = on, το url http://www.example.com/test.php?id=3 θα παράξει το $id. Ή, το $DOCUMENT_ROOT από το $_SERVER['DOCUMENT_ROOT']. Μπορεί να θέλετε να το κάνετε off αν δεν θέλετε να γεμίσετε το global scope των script σας με δεδομένα των χρηστών. Από την PHP 4.2.0, αυτό το directive έχει προεπιλογή το off. Προτιμάται αντί αυτού, να πηγαίνετε μέσω των Προκαθορισμένων Μεταβλητών της PHP, όπως τα superglobals: $_ENV, $_GET, $_POST, $_COOKIE, και $_SERVER. Παρακαλούμε διαβάστε το κεφάλαιο περί ασφάλειας και το Χρησιμοποιώντας το register_globals για σχετικές πληροφορίες.

Παρακαλούμε σημειώστε πως το register_globals δεν μπορεί να οριστεί στο runtime (ini_set()). Ωστόσο, μπορείτε να χρησιμοποιήσετε το .htaccess αν ο web server σας το υποστηρίζει όπως περιγράφεται παραπάνω. Ένα παράδειγμα καταχώρησης στο .htaccess: php_flag register_globals on.

Σημείωση: Το register_globals επιρεάζεται από το variables_order directive.

register_argc_argv boolean

Ορίζει αν η PHP θα δηλώσει τις argv & argc μεταβλητές (που θα περιέχουν τις GET πληροφορίες).

Δείτε επίσης το command line. Επίσης, αυτό το directive έγινε διαθέσιμο στην PHP 4.0.0 και πριν από αυτή την έκδοση ήταν πάντα ενεργοποιημένο.

post_max_size integer

Ορίζει το μέγιστο μέγεθος των post δεδομένων που επιτρέπεται. Αυτή η ρύθμιση επίσης επιρεάζει το upload αρχείων. Για να επιτρέπεται upload μεγάλων αρχείων, αυτή η τιμή πρέπει να είναι μεγαλύτερη από το upload_max_filesize.

Αν το όριο μνήμης είναι ενεργοποιημένο από το configure script, το memory_limit επίσης επιρεάζει το upload αρχείων. Γενικώς, το memory_limit πρέπει να είναι μεγαλύτερο από το post_max_size.

gpc_order string

Ορίζει τη σειρά της ανάλυσης των GET/POST/COOKIE μεταβλητών. Η προεπιλεγμένη ρύθμιση αυτού του directive είναι "GPC". Ορίζοντας αυτό σε "GP", για παράδειγμα, θα κάνει την PHP να αγνοήσει εντελώς τα cookies και να κάνει overwrite όσες GET method μεταβλητές με τις POST-method μεταβλητές που έχουν το ίδιο όνομα.

Σημείωση: Αυτή η επιλογή δεν είναι διαθέσιμη στην PHP 4. Χρησιμοποιήστε το variables_order αντί αυτού.

auto_prepend_file string

Ορίζει το όνομα ενός αρχείου που θα μεταφράζεται αυτόματα πριν το κυρίως αρχείο. Το αρχείο γίνεται include σαν να είχε καλεστεί με τη συνάρτηση include(), έτσι το include_path χρησιμοποιείται.

Η ειδική τιμή none απενεργοποιεί το αυτόματο prepend.

auto_append_file string

Ορίζει το όνομα ενός αρχείου που θα μεταφράζεται αυτόματα μετά το κυρίως αρχείο. Το αρχείο γίνεται include σαν να είχε καλεστεί με τη συνάρτηση include(), έτσι το include_path χρησιμοποιείται.

Η ειδική τιμή none απενεργοποιεί το αυτόματο prepend.

Σημείωση: Αν το script τερματιστεί με την exit(), το auto-append δεν θα συμβεί.

default_mimetype string

default_charset string

Από την 4.0b4, η PHP πάντα βγάζει ένα character encoding στο Content-type: header. Για να απενεργοποιήσετε την αποστολή του charset, απλά ορίστε το να είναι κενό.

always_populate_raw_post_data boolean

Πάντα να γνωστοποιείται η μεταβλητή $HTTP_RAW_POST_DATA.

allow_webdav_methods boolean

Επιτρέπει το χειρισμό των WebDAV http αιτήσεων μέσα από PHP scripts (π.χ. PROPFIND, PROPPATCH, MOVE, COPY, κλπ..) Αν θέλετε να πάρετε τα post data αυτών των requests, πρέπει να ορίσετε το always_populate_raw_post_data επίσης.

Δείτε επίσης τα: magic_quotes_gpc, magic-quotes-runtime, και magic_quotes_sybase.

Paths και Κατάλογοι

Πίνακας 4-6. Επιλογές Ρυθμίσεων για Paths και Καταλόγους

ΌνομαΠροεπιλογήΜεταβλητό
include_pathPHP_INCLUDE_PATHPHP_INI_ALL
doc_rootPHP_INCLUDE_PATHPHP_INI_SYSTEM
user_dirNULLPHP_INI_SYSTEM
extension_dirPHP_EXTENSION_DIRPHP_INI_SYSTEM
cgi.force_redirect"1"PHP_INI_SYSTEM
cgi.redirect_status_env""PHP_INI_SYSTEM
fastcgi.impersonate"0"PHP_INI_SYSTEM

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

include_path string

Ορίζει μια λίστα από κατάλογους όπου οι require(), include() και fopen_with_path() συναρτήσεις ψάχνουν για αρχεία. Το σχήμα είναι σαν την PATH μεταβλητή περιβάλλοντος του συστήματος χωρισμένες με ένα σύμβολο άνω και κάτω τελείας στο UNIX ή ελληνικού ερωτηματικού στα Windows.

Παράδειγμα 4-3. UNIX include_path

include_path=".:/php/includes"

Παράδειγμα 4-4. Windows include_path

include_path=".;c:\php\includes"

Χρησιμοποιώντας μια . στο include path σας επιτρέπει relative includes αφού υπονοεί τον τρέχων κατάλογο.

doc_root string

Το "root directory" της PHP στον server. Χρησιμοποιείται μόνο αν δεν είναι κενό. Αν η PHP γίνει configured με το safe mode, δεν εξυπηρετούνται αρχεία έξω από αυτό τον κατάλογο. Αν η PHP δεν έχει γίνει compiled με FORCE_REDIRECT, ΠΡΕΠΕΙ να ορίσετε το doc_root αν τρέχετε την PHP σαν CGI κάτω από οποιονδήποτε web server (εκτός τον IIS) Η εναλλακτική επιλογή είναι να χρησιμοποιήσετε την cgi.force_redirect ρύθμιση παρακάτω.

user_dir string

Το βασικό όνομα του καταλόγου που χρησιμοποιείται στο home directory κάποιου χρήστη για τα PHP αρχεία, για παράδειγμα public_html.

extension_dir string

Ορίζει σε ποιό κατάλογο η PHP θα ψάχνει για δυναμικά φορτώσιμες επεκτάσεις (dynamically loadable extensions). Δείτε επίσης τα: enable_dl, και dl().

extension string

Ποιές δυναμικά φορτώσιμες επεκτάσεις να φορτώθούν όταν ξεκινά η PHP.

cgi.force_redirect boolean

Το cgi.force_redirect είναι απαραίτητο για να προσφέρει ασφάλεια όταν η PHP τρέχει σαν CGI κάτω από τους περισσότερους web servers. Αν δεν οριστεί, η PHP το ενεργοποιεί από μόνη της. Μπορείτε να το απενεργοποιήσετε ΜΕ ΔΙΚΟ ΣΑΣ ΡΙΣΚΟ.

Σημείωση: Χρήστες Windows: ΜΠΟΡΕΙΤΕ με ασφάλεια να το απενεργοποιήσετε αυτό για τον IIS, μάλιστα, ΠΡΕΠΕΙ να το κάνετε. Για να κάνετε τον OmniHTTPD ή τον Xitami να δουλέψουν ΠΡΕΠΕΙ να το απενεργοποιήσετε.

cgi.redirect_status_env string

Αν το cgi.force_redirect είναι ενεργοποιημένο, και δεν τρέχετε κάτω από Apache ή Netscape (iPlanet) web servers, ΜΠΟΡΕΙ να χρειαστεί να ορίσετε ένα όνομα μεταβλητής περιβάλλοντος που η PHP θα ψάχνει για να ξέρει πως είναι εντάξει να συνεχίσει την εκτέλεση

Σημείωση: Ορίζοντας αυτή τη μεταβλητή ΜΠΟΡΕΙ να δημιουργήσει θέματα ασφάλειας, ΝΑ ΞΕΡΕΤΕ ΤΙ ΚΑΝΕΤΕ ΠΡΩΤΑ.

fastcgi.impersonate string

Το FastCGI κάτω από τον IIS (σε ΟΣ βασισμένα σε WINNT) υποστηρίζει την ικανότητα να παριστάνει tokens ασφάλειας του καλούντος client. Αυτό επιτρέπει στον IIS να ορίσει το περιεχόμενο ασφάλειας κάτω από την οποία τρέχει το request. To mod_fastcgi στον Apache δεν υποστηρίζει προς το παρών αυτό το χαρακτηριστικό (03/17/2002) Ορίστε το σε 1 αν τρέχετε κάτω από IIS. Η προεπιλογή είναι μηδέν.

Upload αρχείων

Πίνακας 4-7. Επιλογές Ρυθμίσεων για Upload Αρχείων

ΌνομαΠροεπιλογήΜεταβλητό
file_uploads"1"PHP_INI_SYSTEM
upload_tmp_dirNULLPHP_INI_SYSTEM
upload_max_filesize"2M"PHP_INI_SYSTEM|PHP_INI_PERDIR

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

file_uploads boolean

Ορίζει αν θα επιτραπούν HTTP upload αρχείων. Δείτε επίσης τα upload_max_filesize, upload_tmp_dir, και post_max_size directives.

upload_tmp_dir string

Ο προσωρινός κατάλογος που χρησιμοποιείται για αποθήκευση αρχείων όταν γίνεται ένα upload αρχείου. Πρέπει να είναι writable (εγγράψιμος) από οποιοδήποτε χρήστη τρέχει σαν αυτόν η PHP. Αν δεν οριστεί, η PHP θα χρησιμοποιήσει την προεπιλογή του συστήματος.

upload_max_filesize integer

Το μέγιστο μέγεθος αρχείο ενός αρχείου που θα γίνει upload.

Γενικά SQL

Πίνακας 4-8. Επιλογές Ρυθμίσεων Γενικά για SQL

ΌνομαΠροεπιλογήΜεταβλητό
sql.safe_mode"0"PHP_INI_SYSTEM

Ακολουθεί μια μικρή επεξήγηση των directive ρυθμίσεων.

sql.safe_mode boolean

Ρυθμίσεις των Directives για τον Debugger

debugger.host string

Το DNS όνομα ή η IP διεύθυνση του host που θα χρησιμοποιεί ο debugger.

debugger.port string

Ο αριθμός του Port που θα χρησιμοποιείται από τον debugger.

debugger.enabled boolean

Ορίζει αν ο debugger είναι ενεργοποιημένος.