PHP Comment modifier les paramètres de configuration

Comment modifier les paramètres de configuration

Exécution de PHP en tant que module Apache

Lorsque vous utilisez PHP comme module Apache, vous pouvez également modifier les paramètres de configuration à l'aide des directives dans les fichiers de configuration d'Apache (par exemple httpd.conf) et les fichiers .htaccess. Vous aurez besoin « AllowOverride Options » ou privilèges « AllowOverride Tous » de le faire.

Il y a plusieurs directives Apache qui vous permettent de modifier la configuration de PHP à partir des fichiers de configuration Apache. Pour une liste des directives sont PHP_INI_ALL. PHP_INI_PERDIR. ou PHP_INI_SYSTEM. un coup d'oeil à la liste de l'annexe des directives du php.ini.

valeur de nom php_value

Définit la valeur de la directive spécifiée. Peut être utilisé uniquement avec PHP_INI_ALL et directives de type PHP_INI_PERDIR. Pour effacer une utilisation de valeur précédemment aucune comme valeur.

Remarque. t l'utilisation php_value 'Don # pour définir des valeurs booléennes. php_flag (voir ci-dessous) doit être utilisé à la place.

nom php_flag on | off

Utilisé pour définir une directive de configuration booléenne. Peut être utilisé uniquement avec PHP_INI_ALL et directives de type PHP_INI_PERDIR.

valeur de nom php_admin_value

Définit la valeur de la directive spécifiée. Cela ne peut pas être utilisé dans les fichiers .htaccess. Tout type de directive ensemble avec php_admin_value ne peut pas être remplacée par .htaccess ou ini_set (). Pour effacer une utilisation de valeur précédemment aucune comme valeur.

nom php_admin_flag on | off

Utilisé pour définir une directive de configuration booléenne. Cela ne peut pas être utilisé dans les fichiers .htaccess. Tout type de directive ensemble avec php_admin_flag ne peut pas être remplacée par .htaccess ou ini_set ().

Exemple # 1 Exemple de configuration Apache

Les constantes PHP n'existent pas en dehors de PHP. Par exemple, dans httpd.conf vous ne pouvez pas utiliser des constantes PHP telles que E_ALL ou E_NOTICE pour définir la directive error_reporting car ils auront aucun sens et évalueront à 0. Utilisez les valeurs de bitmask associées à la place. Ces constantes peuvent être utilisées dans php.ini

Modification de la configuration de PHP via le registre Windows

Lorsque vous exécutez PHP sur Windows, les valeurs de configuration peuvent être modifiés sur une base par répertoire en utilisant le registre de Windows. Les valeurs de configuration sont stockées dans la clé de Registre HKLM \ SOFTWARE \ PHP \ Par valeurs Directory. dans les sous-clés correspondant aux noms de chemin. Par exemple, les valeurs de configuration pour le répertoire c: \ inetpub \ wwwroot seraient stockées dans la clé HKLM \ SOFTWARE \ PHP \ Par Valeurs répertoire \ c \ inetpub \ wwwroot. Les paramètres du répertoire serait actif pour tout script en cours d'exécution à partir de ce répertoire ou tout sous-répertoire de celui-ci. Les valeurs sous la clé doivent avoir le nom de la directive de configuration PHP et la valeur de chaîne. Les constantes PHP les valeurs ne sont pas analysées. Cependant, seules les valeurs de configuration dans PHP_INI_USER peut être réglé de cette façon, les valeurs PHP_INI_PERDIR ne peut pas.

D'autres interfaces à PHP

Peu importe la façon dont vous exécutez PHP, vous pouvez modifier certaines valeurs lors de l'exécution de vos scripts en utilisant ini_set (). Consultez la documentation sur la page ini_set () pour plus d'informations.

Si vous êtes intéressé par une liste complète des paramètres de configuration de votre système avec leurs valeurs actuelles, vous pouvez exécuter la fonction phpinfo (), et consulter la page résultante. Vous pouvez également accéder aux valeurs des directives de configuration individuelles lors de l'exécution en utilisant ini_get () ou get_cfg_var ().

Notes de l'utilisateur 13 Contribution de notes

Ouvert du php.ini c: / php dans votre éditeur de texte

Si vous avez installé Apache dans l'emplacement par défaut, le chemin d'accès doit
être "C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs". Si vous avez installé
ailleurs, trouver le dossier htdocs et tapez son chemin:

doc_root = "C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs"

Juste un peu plus bas dans le fichier, recherchez la ligne qui commence par supprimer le point-virgule dès le début de la extension_
dir, et faites en sorte qu'il pointe vers le sous-dossier, poste de votre dossier de PHP:
extension_dir = "C: \ PHP \ ext"

Ce sont des extensions optionnelles à PHP, désactivé par défaut. nous
veulent activer l'extension MySQL pour que PHP peut communiquer avec MySQL.
Pour ce faire, supprimez le point-virgule dès le début de la ligne de php_mysqli.dll:
extension = php_mysqli.dll

note - PHP_MYSQLI, non PHP_MySQL

Continuez à défiler encore plus bas dans le fichier et recherchez une ligne qui commence par
; Session.save_path. Encore une fois, retirez le point-virgule pour activer cette ligne,
et mettez-le dans votre dossier Temp de Windows:
session.save_path = "C: \ Windows \ Temp"

Accédez au sous-dossier dans votre Apache conf
dossier d'installation (par défaut, C: \ Program Files \ Apache Software
Fondation \ Apache2.2 \ conf), et sélectionnez le fichier httpd.conf situé là. En ordre
pour rendre ce fichier visible pour la sélection, vous devez sélectionner tous les fichiers (*. *) de la
type de fichier menu déroulant en bas de la fenêtre ouverte.
Recherchez la ligne existante dans ce fichier qui commence par DirectoryIndex, montré
ici:

DirectoryIndex index.html

Cette ligne indique à Apache à utiliser que les noms des fichiers quand il recherche la page par défaut
pour un répertoire donné. Ajouter index.php à la fin de cette ligne:

DirectoryIndex index.html index.php

Toutes les options restantes dans ce fichier de configuration longue et intimidant
aurait dû être mis en place correctement par le programme d'installation d'Apache. Tout ce dont tu as besoin
à faire est d'ajouter à la fin du fichier les lignes suivantes:

LoadModule php5_module "C: /PHP/php5apache2_2.dll"
AddType application / x-httpd-php .php
PHPIniDir "C: / PHP"

Assurez-vous que les lignes LoadModule et PHPIniDir pointent vers votre installation de PHP
répertoire, et notez l'utilisation de barres obliques (/) au lieu de barre oblique inverse (\) en
les chemins.

Sauvegardez vos modifications et redémarrer Apache en utilisant l'icône de la barre système Service Monitor Apache. Si tout est
bien, Apache va démarrer à nouveau sans se plaindre.

En cours d'exécution PHP sous Apache pose un problème majeur quand il s'agit par répertoire paramètres de configuration de PHP. Dans l'hébergement virtuel Apache, seul un fichier de configuration de PHP maître (à savoir php.ini) est analysé à l'exécution par script PHP. Sous IIS 6.0 ou plus, vous pouvez inclure par répertoire des fichiers de configuration de PHP pour passer outre ou de remplacer les paramètres de configuration maître. La question ici, cependant, est d'avoir des hôtes virtuels Apache override / Ecraser les paramètres de maître; pas ce que IIS peut faire.

Donc, il y a deux solutions possibles. La première solution est décrite dans la présente section et utilise les paramètres de configuration Apache php_value, php_flag, php_admin_value et php_admin_flag. En cela, chaque hôte virtuel que vous souhaitez avoir certains paramètres de configuration modifiés doivent avoir ces directives définies (et qui est pour chaque paramètre de configuration de PHP). Cela, pour moi, est la solution la plus viable, bien qu'il soit temps et mentalement taxage.

L'autre solution possible est de définir la variable d'environnement PHPRC. A ma connaissance, toutes les implémentations d'Apache permettent la directive SetEnv pour définir la variable PHPRC par-hôte virtuel. Qu'est-ce que cela fait est de dire à PHP de regarder dans l'emplacement spécifié pour le fichier de paramètres de configuration de l'hôte virtuel (par exemple « C: /path/to/custom/php.ini »). Le seul inconvénient de cette méthode est que le fichier php.ini personnalisé de chaque hôte virtuel doit contenir tous les paramètres. En d'autres termes, chaque directive de configuration PHP que vous avez défini dans le fichier php.ini maître doit également être définie dans par-hôte virtuel paramètres de configuration. Est-ce pas sucent? Il me semble plutôt redondant (et défaites complètement le but) que vous devez inclure tous les paramètres de configuration OVER ET ENCORE.

J'espère que ça aide!

J'ai fait quelques tests approfondis sur mon PC à la variable d'environnement PHPRC fixé par la directive Apache SetEnv. Il me semble que cette variable est complètement ignorée en utilisant cette directive. J'ai tout essayé et ne peut arriver à la conclusion que A) je l'ai fait quelque chose de très mal, ou B) qu'il ne fonctionne tout simplement pas comme prévu.

La première solution, cependant, ne fonctionne comme par magie! Donc, pour développer mon post précédent, la seule solution réelle et viable à ce problème est d'utiliser le php_value, php_flag, php_admin_value et directives php_admin_flag dans vos configurations d'hôtes virtuels.

Encore une fois, il peut être très ennuyeux! Mais cela ne fonctionne.

Clé de Registre de manutention à travers PHP:

Ceci est un prêt à utiliser le code. Il vous suffit de copier ce code dans un fichier PHP.

// Le code php commence ici.

// Lecture du Registre

$ WshShell = new COM ( 'WScript.Shell');
$ data = $ Wshshell-> RegRead ( 'HKEY_LOCAL_MACHINE \ SOFTWARE \ de chemin de \ 7-Zip');
echo "Les données sont ::" $ data.

// Fonction pour l'écriture au registre.

fonction registry_write (dossier $, clé $, la valeur de $, tapez $ = "REG_SZ")
$ WshShell = new COM ( "WScript.Shell");

Registre $ = "\\ HKEY_LOCAL_MACHINE SOFTWARE". dossier $. "". clé $;
essayez $ result = $ WshShell-> RegWrite (Registre $, la valeur de $, $ type);
echo « L'entrée est écrit avec succès à: ». $ registre;
retour ($ result);
>
. Catch (Exception $ e) echo "Certains exception par écrit du registre" $ e;
>

// Fonction pour la suppression du registre d'entrée.

fonction registry_delete (dossier $, clé $, la valeur de $, tapez $ = "REG_SZ")
$ WshShell = new COM ( "Wscript.shell");
Registre $ = "\\ HKEY_LOCAL_MACHINE SOFTWARE". dossier $. "". clé $;
essayez $ result = $ WshShell-> RegDelete (registre de $);
echo $ key. "est supprimé avec succès HKEY_LOCAL_MACHINE \\ SOFTWARE". dossier $;
retour ($ result);
>
catch (Exception $ e) echo "Certains exception avec le code ::" $ e.
>
return false;

// ici 7-ZIP est pris comme exemple.

$ Dossier = "7-ZIP";
$ Key = "Key_name";
$ value = "Key_Value";

Pour les utilisateurs de Mac (Leopard / Tiger / Lion), il est bon de savoir exactement où vos httpd.conf et php.ini ares ramassé, mais, hors de la boîte, ceux-ci ne sont définis que dans les paramètres du compilateur comme valeurs par défaut.

Httpd a été compilé avec les paramètres par défaut de
SERVER_CONFIG_FILE = "/ private / etc / apache2 / httpd.conf"
ce qui signifie à partir apache à l'aide apachectl prend cette httpd.conf sans qu'il soit spécifié sur la ligne de commande via le fichier org.apache.httpd.plist est / System / Library / LaunchDaemons.

Encore une fois, le httpd.conf par défaut ne contient pas de PHPIniDir et localise php.ini via libphp5.so dans / etc - vous devez créer un ici (en utilisant l'un des modèles de php.ini.default si vous voulez).

Il vaut la peine de changer la mise en PHPIniDir httpd.conf mise à par exemple .:

Fichier de configuration /usr/local/php5/lib/php.ini

de sorte que vous savez exactement ce qui php.ini est utilisé à tout moment.

phpinfo () va alors vous informer que qu'il utilise ce fichier.

Articles Liés