web-dev-qa-db-fra.com

Comment inclure un fichier php.ini dans un autre fichier php.ini?

Comment inclure un fichier php.ini dans un autre fichier php.ini?

31

Je ne pense pas que vous puissiez "inclure" des fichiers .ini à partir du fichier php.ini principal.

Une solution possible, cependant, pourrait être d'utiliser cette option sur la ligne de configuration, lors de la compilation PHP:

--with-config-file-scan-dir=PATH                                                        
    Set the path where to scan for configuration files

Si cette option est utilisée au moment de la compilation, PHP recherchera chaque fichier .ini dans ce répertoire, en plus du fichier php.ini "normal".

Je suppose que c'est ce qui est utilisé par Ubuntu, par exemple, qui utilise un fichier .ini différent pour chaque extension téléchargée, au lieu de modifier php.ini.

Le chemin d'accès au fichier php.ini en cours de définition avec cette option, sur la ligne de configuration:

--with-config-file-path=PATH                                                            
    Set the path in which to look for php.ini [PREFIX/lib]

Pourtant, cela signifie probablement que vous devrez recompiler PHP - ce qui n'est pas si difficile, btw - la partie la plus difficile étant d'obtenir les dépendances dont vous avez besoin.

Et, voici un article sur la liste internals @ mailling-list qui dit la même chose que moi: fichiers de configuration et PHP_CONFIG_FILE_SCAN_DIR

23
Pascal MARTIN

J'ai installé memcached pour php et je ne savais pas comment m'assurer que son ini était inclus dans mon php.ini, mais il se trouve que c'est automatiquement le cas. Vous pouvez valider ce qui est chargé en exécutant php --ini.

php --ini
Configuration File (php.ini) Path: /opt/local/etc/php5
Loaded Configuration File:         (none)
Scan for additional .ini files in: /opt/local/var/db/php5
Additional .ini files parsed:      /opt/local/var/db/php5/memcached.ini
8
hockey_dave

on peut aussi définir le chemin dans le ~/.bashrc

export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
8
Martin Zeitler

Il semble que vous ne puissiez pas inclure un fichier ini dans un autre afin qu'il soit référencé et chargé. Mais vous pouvez configurer php pour charger plusieurs fichiers en lui indiquant dans quels dossiers regarder.

Lorsque vous utilisez une configuration FastCGI (peut-être aussi dans FPM, bien que je ne le sois pas sûr), vous pouvez exporter des variables d'environnement depuis le wrapper php.

Là, vous pourriez faire:

export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc

/var/www/mydomain.net/etc N'est qu'un exemple, c'est le dossier dans lequel vous placez vos fichiers ini supplémentaires. Il semble que cela puisse être une liste séparée par :.

Utilisez un phpinfo.php (Fichier appelé arbitrairement ne contenant que <?php phpinfo();), ouvrez l'URL correspondante dans votre navigateur et vérifiez la liste des répertoires qui sont analysés et la liste des fichiers qui sont chargés en haut zone de celui-ci.

/etc/php5/cgi/conf.d Devrait toujours être inclus (je suppose parce qu'il a été compilé dans l'exécutable php) et peut-être pas vraiment nécessaire.

3
sjas

En fait VOUS POUVEZ. Je viens de le tester sur Debian 9 avec PHP-FPM. À partir d'un fichier .ini/.conf, utilisez cette syntaxe:

include=/path/to/special-php.ini

ou même

include=/path/to/special-dir-full-of-conf-files/*.conf 

tel qu'il est utilisé dans

/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf

Soit dit en passant, cela sera très utile si vous divisez vos paramètres par sujet et si vous souhaitez un ensemble pour le développement et un autre pour la production. Ensuite, vous pouvez le faire dans le style Debian/Apache comme

/etc/php/conf-available/
/etc/php/conf-enabled/

avec des symliks du second à l'autre et un include à celui-là.

2
ondelettes

Tu ne peux pas. Lire les pages en ligne:

Le fichier de configuration

RÉSUMÉ: Le fichier de configuration (php.ini) est lu lorsque PHP démarre. Pour les versions de module serveur de PHP, cela ne se produit qu'une seule fois au démarrage du serveur Web. Pour la version CGI et CLI, cela se produit à chaque appel.

fichiers .user.ini

RÉSUMÉ: En plus du fichier php.ini principal, PHP recherche les fichiers INI dans chaque répertoire, en commençant par le répertoire du fichier PHP demandé, et remontant jusqu'à la racine actuelle du document (comme défini dans $ _SERVER ['DOCUMENT_ROOT']). Seuls les paramètres INI avec les modes PHP_INI_PERDIR et PHP_INI_USER seront reconnus dans les fichiers INI de style .user.ini.

1
adatapost

Vous pouvez essayer de le simuler en utilisant la fonction ini_set . Mais comme l'indique la "page de manuel", toutes les options ini ne peuvent pas être modifiées à l'aide d'ini_set. C'est certainement une fonction utile.

0
Stephen