« Apache2 - Configuration » : différence entre les versions
(Aucune différence)
|
Version du 3 avril 2011 à 11:36
Fonctionnalités | Solutions |
---|---|
Serveur Web | Apache |
Domaines Virtuels | Directive <VirtualHost> |
Authentification ldap | mod_auth_ldap (intégré) mod_ldap (intégré) |
Sécurisation | mod_rewrite (intégré) mod_security |
HTTPS | mod_ssl (intégré) |
Package Gentoo: apache +vhosts +ldap +ssl
Configuration Gentoo : les fichiers de configuration se trouvent dans /etc/apache2
- httpd.conf : fichier de configuration principal
- /etc/apache2/modules : paramétrage des modules
- /etc/apache2/vhosts : configuration des domaines virtuels
- /etc/apache2/ssl : clés ssl
Configuration de base
http://httpd.apache.org/docs/2.0/
La configuration par défaut
<licode file=/etc/apache2/httpd/conf>
- ServerRoot: The top of the directory tree under which the server's
- configuration, error, and log files are kept.
ServerRoot "/usr/lib/apache2" </licode>
<licode file=/etc/apache2/modules.d/00_default_settings.conf>
- PidFile: The file in which the server should record its process
- identification number when it starts.
PidFile "/var/run/apache2.pid"
- KeepAlive: Whether or not to allow persistent connections (more than
- one request per connection). Set to "Off" to deactivate.
KeepAlive On
- MaxKeepAliveRequests: The maximum number of requests to allow
- during a persistent connection. Set to 0 to allow an unlimited amount.
- We recommend you leave this number high, for maximum performance.
MaxKeepAliveRequests 100
- KeepAliveTimeout: Number of seconds to wait for the next request from the
- same client on the same connection.
KeepAliveTimeout 15
- HostnameLookups: Log the names of clients or just their IP addresses
- e.g., www.apache.org (on) or 204.62.129.132 (off).
- The default is off because it'd be overall better for the net if people
- had to knowingly turn this feature on, since enabling it means that
- each client request will result in AT LEAST one lookup request to the
- nameserver.
HostnameLookups Off </licode>
Il faut changer le paramètre ServerAdmin: <licode file=/etc/apache/httpd.conf>
- ServerAdmin: Your address, where problems with the server should be
- e-mailed. This address appears on some server-generated pages, such
- as error documents. e.g. admin@your-domain.com
ServerAdmin christophe_nospam@livois.com </licode>
La gestion des Multi Processing Modules (MPM) se fait dans 00_mpm.conf:
<licode file=/etc/apache2/modules.d/00_mpm.conf>
- prefork MPM
- This is the default MPM if USE=-threads
- MinSpareServers: Minimum number of idle child server processes
- MaxSpareServers: Maximum number of idle child server processes
<IfModule mpm_prefork_module>
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 50 MaxRequestsPerChild 10000
</IfModule>
- worker MPM
- This is the default MPM if USE=threads
- MinSpareThreads: Minimum number of idle threads available to handle request spikes
- MaxSpareThreads: Maximum number of idle threads
- ThreadsPerChild: Number of threads created by each child process
<IfModule mpm_worker_module>
StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 10000
</IfModule>
</licode>
Sécurisation
http://httpd.apache.org/docs/2.0/misc/security_tips.html
http://www.securityfocus.com/print/infocus/1694
http://www.securityfocus.com/print/infocus/1786
Limiter la fuite d'information
<licode file=/etc/apache/httpd.conf>
- ServerTokens
- This directive configures what you return as the Server HTTP response
- Header. The default is 'Full' which sends information about the OS-Type
- and compiled in modules.
- Set to one of: Full | OS | Minor | Minimal | Major | Prod
- where Full conveys the most information, and Prod the least.
ServerTokens Prod
- Optionally add a line containing the server version and virtual host
- name to server-generated pages (error documents, FTP directory listings,
- mod_status and mod_info output etc., but not CGI generated documents).
- Set to "EMail" to also include a mailto: link to the ServerAdmin.
- Set to one of: On | Off | EMail
ServerSignature Off </licode>
Résister aux attaques DOS
Stratégie de défense (apachesecurity.net):
- Considérer les attaques DOS comme un des risques possibles.
- Connaître le contenu hébergé par le serveur - adapter le serveur (software) en conséquence. (cf § sur gestion des ressources)
- Préparer les réactions possibles en cas d'attaque DoS (ex: avoir un contact avec son fournisseur d'accès).
- Superviser le serveur pour détecter les attaques au plus tôt
- Réagir rapidement lors d'une attaque
- Si les attaques s'intensifient, mettre en place des outils de défense automatique.
<licode file=/etc/apache/httpd.conf>
- Timeout: The number of seconds before receives and sends time out.
Timeout 60 </licode>
Remarque : Pour tester la charge d'un serveur, différents outils sont listés sur http://www.softwareqatest.com
L'outil ab (Apache Benchmark) est livré avec apache :
#ab -n 1000 -c 100 http://www.livois.com
"Chrooter" Apache
- Utiliser mod_security ou mod_chroot
http://core.segfault.pl/~hobbit/mod_chroot/
- Définir la directive SecChrootDir (mod_security) ou Chrootdir (mod_chroot)
<licode file=/etc/apache2/modules.d//99_mod_security.conf> SecChrootDir /chroot/apache </licode>
- Créer différents répertoires à l'intérieur de la prison
#mkdir -p /chroot/apache/var/run/ #mkdir /chroot/apache/var/log #mkdir /chroot/apache/tmp #cp -pR /var/www /chroot/apache/var/
- Ajuster la configuration de mysql
<licode file=/etc/mysql/my.cnf> [client] socket = /chroot/apache/var/run/mysqld/mysqld.sock
[mysqld] socket = /chroot/apache/var/run/mysqld/mysqld.sock </licode>
- LDAP ?
modsecurity
http://www.gotroot.com/tiki-index.php?page=mod_security
Package Gentoo: mod_security ~x86
Remarque Gentoo: Au 09/04/06, la version gentoo de base est la 1.8.7. Les règles proposées ne sont valides qu'à partir de la version 1.9. Nous rajoutons donc la ligne net-www/mod_security ~x86 au fichier /etc/portage/package.keywords.
Les fontionnalités de modsecurity sont :
- Request filtering; incoming requests are analysed as they come in, and before they get handled by the web server or other modules.
- Anti-evasion techniques; paths and parameters are normalised before analysis takes place in order to fight evasion techniques.
- Understanding of the HTTP protocol; since the engine understands HTTP, it performs very specific and fine granulated filtering.
- POST payload analysis; the engine will intercept the contents transmitted using the POST method, too.
- Audit logging; full details of every request (including POST) can be logged for later analysis.
- HTTPS filtering; since the engine is embedded in the web server, it gets access to request data after decryption takes place.
<licode file=/etc/apache2/modules.d/99_mod_security.conf> <IfDefine SECURITY>
<IfModule !mod_security.c> LoadModule security_module modules/mod_security.so </IfModule>
</IfDefine>
<IfModule mod_security.c>
# Turn the filtering engine On or Off SecFilterEngine On
# Make sure that URL encoding is valid SecFilterCheckURLEncoding On
# The audit engine works independently and # can be turned On of Off on the per-server or # on the per-directory basis. "On" will log everything, # "DynamicOrRelevant" will log dynamic requests or violations, # and "RelevantOnly" will only log policy violations SecAuditEngine RelevantOnly
# The name of the audit log file SecAuditLog logs/audit_log
SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLevel 1
# Should mod_security inspect POST payloads SecFilterScanPOST On
# Action to take by default SecFilterDefaultAction "deny,log,status:500"
# Prevent OS specific keywords SecFilter /etc/passwd
# Prevent path traversal (..) attacks SecFilter "\.\./"
# Weaker XSS protection but allows common HTML tags SecFilter "<space:*script"
# Prevent XSS atacks (HTML/Javascript injection) SecFilter "<(.|\n)+>"
# Require HTTP_USER_AGENT and HTTP_HOST headers SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"
# Forbid file upload #SecFilterSelective "HTTP_CONTENT_TYPE" multipart/form-data
# when allowing upload, only allow images # note that this is not foolproof, a determined attacker # could get around this #<Location /fileupload.php> # SecFilterInheritance Off # SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)" #</Location>
</IfModule> </licode>
#mkdir /etc/apache2/modules.d/mod_security #cd /etc/apache2/modules.d/mod_security #wget http://www.modsecurity.org/download/rules/modsecurity-general.conf #wget http://www.modsecurity.org/download/rules/modsecurity-hardening.conf #wget http://www.modsecurity.org/download/rules/modsecurity-php.conf
Rajouter ces fichiers à la configuration: <licode file=/etc/apache2/modules.d/99_mod_security.conf> Include /etc/apache2/modules.d/mod_security/modsecurity-hardening.conf Include /etc/apache2/modules.d/mod_security/modsecurity-general.conf Include /etc/apache2/modules.d/mod_security/modsecurity-php.conf </licode>
/etc/conf.d/apache2 Il faut ajouter la directive -D SECURITY à la variable APACHE2_OPTS.
PHP
Package Gentoo : dev-lang/php +apache2 +cli +dba +exif
Voir la liste des modules php compilés.
#php -m
Désactiver certaines options
register globals
http://www.php.net/manual/fr/security.globals.php
Il est important de laisser cette directive à Off (défaut depuis PHP 4.2).
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- You should do your best to write your scripts so that they do not require
- register_globals to be on; Using form variables as globals can easily lead
- to possible security problems, if the code is not very well thought of.
register_globals = Off </licode>
allow_url_fopen
Cette option permet de traiter les urls comme des fichiers. Ainsi, mettre une valeur d'url à une variable permettrait l'exécution d'un code externe lors de la réutilisation de cette variable par les scripts PHP.
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- Whether to allow the treatment of URLs (like http
- // or ftp://) as files.
allow_url_fopen = Off </licode>
enable_dl
La fonction dl() permet à PHP de charger une extension à la volée. Quelqu'un pourrait écrire un module qui contourne certaines sécurité et le charger ensuite comme le décrit l'article: http://www.phrack.org/phrack/62/p62-0x0a_Attacking_Apache_Modules.txt .
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- Whether or not to enable the dl() function. The dl() function does NOT work
- properly in multithreaded servers, such as IIS or Zeus, and is automatically
- disabled on them
enable_dl = Off </licode>
Remarque : Cette directive est à Off en safe_mode.
safe mode
http://fr3.php.net/manual/fr/features.safe-mode.php
Attention : Ce mode n'est plus préconisé et est supprimé dans PHP6
Le safe_mode est une tentative des développeurs PHP de limiter les risques liés à la programmation "server-side".
L'impact le plus important du safe_mode est la restriction sur l'accès aux fichiers. PHP demande que l'uid du propriétaire du fichier corresponde à l'uid du propriétaire du script exécuté.
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- Safe Mode
safe_mode = On
- By default, Safe Mode does a UID compare check when
- opening files. If you want to relax this to a GID compare,
- then turn on safe_mode_gid.
safe_mode_gid = Off </licode>
Mettre le safe_mode_gid à On permet d'assouplir la règle. Il faut que le compte apache et les comptes des développeurs quid déposent les scripts soient dans le même groupe.
La directive open_basedir restreint l'accès de PHP aux répertoires listés. Lorsqu'un serveur apache est configuré en multi- domaines, il vaut mieux définir cette directive par vhost: <licode file="/etc/apache2/vhosts.d/www.livois.com.conf"> <Directory /var/www/www.livois.com/>
php_admin_value open_basedir /var/www/www.livois.com/
</Directory> </licode>
limiter l'utilisation des ressources
Définir les limites
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- Resource Limits ;
max_execution_time = 60 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
- You should do your best to write your scripts so that they do not require
- register_globals to be on; Using form variables as globals can easily lead
- to possible security problems, if the code is not very well thought of.
register_globals = On
- Maximum size of POST data that PHP will accept.
post_max_size = 10M </licode>
Gestion des uploads
<licode file=/etc/php/apache2-php[4|5]/php.ini>
- File Uploads ;
- Whether to allow HTTP file uploads.
file_uploads = On
- Temporary directory for HTTP uploaded files (will use system default if not
- specified).
- upload_tmp_dir =
- Maximum allowed size for uploaded files.
upload_max_filesize = 50M </licode>
Gestion des logs
<licode file=/etc/php/apache2-php4/php.ini> error_reporting = E_ALL
- Log errors into a log file (server-specific log, stderr, or error_log (below))
- As stated above, you're strongly advised to use error logging in place of
- error displaying on production web sites.
log_errors = On
- Print out errors (as a part of the output). For production web sites,
- you're strongly encouraged to turn this feature off, and use error logging
- instead (see below). Keeping display_errors enabled on a production web site
- may reveal security information to end users, such as file paths on your Web
- server, your database schema or other information.
display_errors = Off
- Even when display_errors is on, errors that occur during PHP's startup
- sequence are not displayed. It's strongly recommended to keep
- display_startup_errors off, except for when debugging.
display_startup_errors = Off
- Log errors to specified file.
error_log = /var/log/apache2/php5.log </licode>
La configuration ci-dessus permet de logguer les erreurs dans un fichier de logs et de ne pas les afficher à l'écran.
Autres
PHP5 contient une couche d'abstraction qui permet de filtrer la valeur d'un paramètre avant de l'enregistrer. Un filtre d'exemple est disponible à l'adresse suivante: http://cvs.php.net/viewvc.cgi/php-src/README.input_filter
Domaines virtuels
http://httpd.apache.org/docs-2.0/vhosts/
Créer un répertoire pour chaque domaine virtuel à créer
#mkdir /var/www/www.livois.com/ #mkdir /var/www/www.info.test/
Les vhosts sont définis dans le répertoire /etc/apache2/vhosts.d.
Attention : les fichiers de configuration doivent être de la forme *.conf
Le virtualhost par défaut est défini dans le fichier 00_default_vhost.conf
<licode file=/etc/apache2/vhosts.d/00_default_vhost.conf> NameVirtualHost *:80 <VirtualHost *:80>
DocumentRoot /var/www/localhost
</VirtualHost>
<Directory /var/www/localhost/>
....
</Directory> </licode>
Pour les suivant, il faut indiquer:
- le ServerName
- le DocumentRoot
- le ServerAlias (au cas où plusieurs noms de sites sont acceptés)
<licode file=/etc/apache2/vhosts.d/www.livois.com.conf> <VirtualHost *:80>
ServerName www.livois.com #ServerAlias *.livois.com DocumentRoot /var/www/www.livois.com Setenv VLOG
</VirtualHost>
<Directory /var/www/www.livois.com/> ... </Directory> </licode>
Authentification LDAP
http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html
http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
- Les modules ldap sont inclus dans le package apache2
La configuration de l'authentification LDAP nécessite l'activation de 2 modules:
- mod_auth_ldap (permet l'authentification LDAP pour apache)
http://httpd.apache.org/docs-2.0/mod/mod_auth_ldap.html
- mod_ldap (améliore les performances d'authentification)
http://httpd.apache.org/docs-2.0/mod/mod_ldap.html
L'authentification LDAP s'active active par l'intermédiaire de 2 fichiers.
- L'activation des modules LDAP se fait en indiquant -D AUTH_LDAP -D LDAP dans /etc/conf/apache2, comme l'explique /etc/apache2/conf/modules.d/46_mod_ldap.conf
<licode file=/etc/conf.d/apache2> APACHE2_OPTS="-D AUTH_LDAP -D LDAP" </licode>
<licode file=/etc/apache2/vhosts/www.livois.com.conf> <Directory /var/www/www.livois.com/>
Options -Indexes FollowSymLinks MultiViews AllowOverride All AuthType Basic AuthBasicProvider ldap #directive requise avec apache2.2
AuthName "La Page des Livois" AuthLDAPURL ldap://ldap.livois.com:389/o=hebergement,dc=livois,dc=com?uid?sub?(&(AccountActive=TRUE)(objectClass=*))
<IfModule mod_access.c> Order allow,deny Allow from all </IfModule>
</Directory> </licode>
La ligne AuthLDAPURL définit l'authentification LDAP
- sur le serveur ldap.livois.com, sur le port 389
- le base DN est o=hebergement, dc=livois,dc=com
- l'authentification se fait à partir du champ mail
- si le champ AccountActive=TRUE
- si le champ uid est non vide
L'autorisation se fait si l'utilisateur (champ uid) est valide et que le mot de passe entré dans le navigateur correspond au mot de passe LDAP du compte.
ldap-status La performance de cache du module mod_ldap est accessible à l'adresse: http://www.livois.com/ldap-status, comme configuré dans 46_mod_ldap.conf
<licode file=/etc/apache2/modules.d/46_mod_ldap.conf> <Location /ldap-status>
SetHandler ldap-status Order deny,allow Deny from all Allow from 192.168.10.1/24 </Location>
</licode>
HTTPS (TODO)
Modules Apache
mod_dav
http://httpd.apache.org/docs/2.0/mod/mod_dav.html
Package Gentoo: mod_dav
<licode file=/etc/apache2/modules.d/45_mod_dav.conf> <IfDefine DAV>
<IfModule !mod_dav.c> LoadModule dav_module modules/mod_dav.so </IfModule>
</IfDefine>
<IfDefine DAV_FS>
<IfModule !mod_dav_fs.c> LoadModule dav_fs_module modules/mod_dav_fs.so </IfModule>
</IfDefine>
<IfModule mod_dav.c>
DavMinTimeout 600
</IfModule>
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database. DavLockDB /var/lib/dav/lockdb
</IfModule> </licode>
- Nous configurons l'accès à certains fichiers en protocole WEBDAV avec l'option « Dav On ».
<licode file="fichier de configuration de l'hôte virtuel"> <Directory /var/www/www.livois.com/supervision/> <IfModule mod_dav.c>
DavMinTimeout 600 #Options None Dav On
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require valid-user </Limit>
</IfModule> .... </Directory> </licode>
/etc/conf.d/apache2 Il faut ajouter la directive -D DAV -D DAV_FS à la variable APACHE2_OPTS.
Quelques remarques :
- Attention à bien sécuriser l'accès aux fichier par une authentification apache!
- Les répertoires doivent être accessible en lecture et en écriture par l'utilisateur apache.
Remarque php : One common request is to use mod_dav to manipulate dynamic files (PHP scripts, CGI scripts, etc). This is difficult because a GET request will always run the script, rather than downloading its contents. One way to avoid this is to map two different URLs to the content, one of which will run the script, and one of which will allow it to be downloaded and manipulated with DAV.
Alias /phparea /home/gstein/php_files
Alias /php-source /home/gstein/php_files
<Location /php-source> DAV On
ForceType text/plain
</Location>
With this setup, http://example.com/phparea can be used to access the output of the PHP scripts, and http://example.com/php-source can be used with a DAV client to manipulate them.
Une autre de solution serait peu-être de configurer un hôte virtuel dédié à l'accès WEBDAV (ex: webdav.livois.com).
Test et utilisation
L'utilitaire litmus sous Linux permet de tester le fonctionnement de webdav.
Des clients possibles sont :
- IE (windows): http://cc.uoregon.edu/cnews/winter2003/webdav.html
- Konqueror (Linux/KDE): il suffit de taper: webdav://urldusitewebdav
- Nautilus (Linux/Gnome)
Sécurité avancée
Optimisation des performances
A HOWTO on Optimizing PHP http://phplens.com/lens/php-book/optimizing-debugging-php.php
Tuning Apache and PHP for Speed on Unix http://phplens.com/phpeverywhere/tuning-apache-php
Optimizing apache http://www.linuxquestions.org/questions/answers.php?action=viewarticle&artid=312
Performance-tuning Apache http://www.xs4all.nl/~thomas/oscon2003/PerformanceTuning.html
Optimisation des ressources
Mémoire
Les serveurs virtuels héritent de la configuration du serveur principal. Pour alléger les process apache, il est bon de limiter la configuration du serveur principal.
Programmation des applications
- les connexions persistantes aux bases de données mobilisent des ressources
- le "page caching" limite le nombre de connexions à la base de données
- test de charge
- Web Site Test Tools and Site Management Tools - http://www.softwareqatest.com
Bande Bassante
- Bandwith stealing (lien vers une image du site)
Une façon de régler ce problème est d'utiliser mod_rewrite.
<licode>
- allow empty referrers, for when a user types the URL directly
RewriteCond %{HTTP_REFERER} !^$
- allow users coming from livois.com
RewriteCond %{HTTP_REFERER} !^http://www\.livois\.com [nocase]
- only prevent images from being hotlinked - otherwise
- no one would be able to link the site at all!
RewriteRule(\.gif|\.jpg|\.png|\.swf)$ $0 [forbidden] </licode>
Accélérateurs PHP
Remarque :Eaccelerator semble plus rapide qu'apc mais ne fonctionne pas avec PHP5.1.
eaccelerator
Package Gentoo: dev-php4/eaccelerator ou dev-php5/eaccelerator ~x86
Configurer apache pour accéder à la page eaccelerator/eaccelrator.php: <licode file=apache-host.conf>
Alias /eaccelerator "/usr/share/eaccelerator/"
</licode>
apc
http://pecl.php.net/package/APC
Package Gentoo: dev-php4/pecl-apc ou dev-php5/pecl-apc ~x86
Configurer apache pour accéder à la page apc/apc.php <licode file=apache-host.conf>
Alias /apc "/usr/share/apc/"
</licode>
La configuration est réalisée dans apc.ini.
- activer en passant apc.enabled à 1
- apc.shm_size donne la taille de la mémoire accordée au cache
- apc.shm_segments permet d'avoir plusieurs cache en mémoire
<licode file=/etc/php/apache2-php5/ext-active/apc.ini>
extension=apc.so
apc.enabled="1"
apc.shm_segments="1"
apc.shm_size="30"
apc.num_files_hint="1024"
apc.ttl="7200"
apc.user_ttl="7200"
apc.gc_ttl="3600"
apc.cache_by_default="1"
- apc.filters=""
- apc.mmap_file_mask="/tmp/apcphp5.XXXXXX"
apc.slam_defense="0" apc.file_update_protection="2" apc.enable_cli="0" apc.max_file_size="1M" apc.stat="1" apc.write_lock="1" apc.report_autofilter="0" apc.include_once_override="0" apc.rfc1867="0" apc.rfc1867_prefix="upload_" apc.rfc1867_name="APC_UPLOAD_PROGRESS" apc.rfc1867_freq="0" apc.localcache="0" apc.localcache.size="512" apc.coredump_unmap="0 </licode>
Load Balancing et Fail Over
Linux Mag 78
Répartition de charge par DNS
Répartition de charge par http Redirect
- Cette redirection peut être intelligente et s'appuyer sur la localisation géographique du client.
Cette approche fonctionne pour les requêtes du type GET mais n'est généralement pas applicable sur des requêtes de type POST. En effet, les navigateurs ne savent pas ré-émettre des requêtes POST.
Répartition de charge par boîtier
- Un serveur frontal redirige le trafic vers un serveur approprié (analyse de la charge et disponibilité des serveurs).
Ces technologies permettent de déployer des clusters verticaux (ensemble de même applications sur un serveur) et horizontaux (ensemble de machines similaires). .
Annexes
Packages Gentoo
Package | D | Fichiers de configuration |
---|---|---|
apache | apache2 |
/etc/apache2/ /etc/conf.d/apache2 /etc/apache/httpd.conf /etc/apache2/vhosts.d/00_default_vhost.conf /etc/apache2/vhosts.d/www.livois.com.conf /etc/apache2/modules.d/46_mod_ldap.conf /etc/apache2/modules.d/45_mod_dav.conf /etc/apache2/modules.d/99_mod_security.conf |
dev-lang/php USE= apache2 cli dba exif |
/etc/php/apache2-php4/php.ini /etc/php/cli-php4/php.ini |
Copyright
© 2006-2008 Christophe de Livois
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL. |