Mec, où est mon php.ini?
Il y a quelques années, J'ai installé Apache 2.2 x et PHP 5.3.1 sur un serveur Linux que je maintiens. J'ai utilisé .tar.gz et les construit comme indiqué (au lieu de RPM et what-have-you). Et tout était bien.
Aujourd'hui, je dois installer Ce qui ressemble à une bibliothèque PHP. Je suis passé par toutes les étapes pour faire installer, et je trouve ibm_db2.so dans $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so
Le Grand hic est que la dernière étape consiste à configurer php.ini mais il n'y a pas de php.ini sur mon système. Horreur des horreurs. PHP fonctionne très bien, sauf bien sûr pour cette nouvelle chose ibm_db2 que je veux utiliser pour que quelqu'un puisse utiliser une interface graphique pour bricoler DB2
. (J'ai essayé un petit script php qui échoue et indique que les fonctions ibm_db2 ne sont pas disponibles).
Je dois faire face à PHP Une fois toutes les quelques années, alors veuillez m'éclairer à un niveau très basique sur ce que je pourrais faire pour permettre l'accès à l'interface graphique sur le web à DB2
.
12 réponses
La meilleure façon de trouver ceci est: créer un fichier php et ajoutez le code suivant:
<?php phpinfo(); ?>
Et ouvrez-le dans le navigateur, il affichera le fichier qui est en cours de lecture!
Mises à jour par OP:
- préalablement accepté réponse est susceptible d'être plus rapide et plus pratique pour vous, mais il n'est pas toujours correcte. Voir les commentaires sur cette réponse.
- veuillez également noter l'alternative la plus pratique
<?php echo php_ini_loaded_file(); ?>
mentionnée dans cette réponse.
Sur la ligne de commande exécuter:
php --ini
, Vous obtiendrez quelque chose comme:
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini
Ça vient de ma machine de développement locale. Cependant, la deuxième ligne est intéressant. Si rien n'est mentionné, jetez un oeil à la première. C'est le chemin, où PHP cherche le php.ini
.
Vous pouvez grep les mêmes informations en utilisant phpinfo()
dans un script et l'appeler avec un navigateur. Son mentionné dans le premier bloc de la sortie. php -i
fait la même chose pour la ligne de commande, mais c'est tout à fait aise.
Cela fonctionne pour moi:
php -i | grep 'php.ini'
, Vous devriez voir quelque chose comme:
Loaded Configuration File => /usr/local/lib/php.ini
P. s. Pour obtenir seulement le php.dansdans chemin
php -i | grep /.+/php.ini -oE
Dans la fenêtre de commande tapez
php --ini
Il vous montrera le chemin quelque chose comme
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
Si la commande ci-dessus ne fonctionne pas, utilisez ceci
echo phpinfo();
Cette commande devrait vous aider à la trouver
php -r "phpinfo();" | grep php.ini
Utilisez les commandes suivantes pour trouver le chemin du fichier php.ini
sous linux.
[root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production
ou essayez ceci d'une autre manière
[root@AnyDirectory ~]# php --ini
il montre le résultat du chemin
phpinfo();
Vous indiquera son emplacement, ou à partir de la ligne de commande
php -i
PHP est livré avec deux fonctions natives pour montrer quel fichier de configuration est chargé:
- php_ini_loaded_file retourne le fichier ini chargé
- php_ini_scanned_files renvoie une liste de .fichiers ini analysés à partir du répertoire ini supplémentaire
Selon votre configuration, Apache et CLI peuvent utiliser différents fichiers ini. Voici les deux solutions :
Apache:
Ajoutez simplement ce qui suit dans un fichier php et ouvrez - le dans votre navigateur
print php_ini_loaded_file();
print_r(php_ini_scanned_files());
CLI:
Copier-coller dans votre terminal :
php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Vous pouvez obtenir plus d'informations sur vos fichiers de configuration en utilisant quelque chose comme:
$ -> php -i | ack config # Use fgrep -i if you don't have ack
Configure Command => './configure' ...
Loaded Configuration File => /path/to/php.ini
Pour SAPI: php-fpm
Il N'est pas nécessaire de créer un php.info fichier (ce n'est pas une bonne politique de le laisser au monde pour lire de toute façon). Sur la ligne de commande:
php-fpm -i | more
Quelque part dans sa sortie, il affichera cette ligne:
Configuration File (php.ini) Path => /etc
Voici une explication plus complète: https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/
Il existe plusieurs moyens valables déjà mentionnés pour localiser le php.fichier ini, mais si vous arrivé sur cette page parce que vous voulez faire quelque chose avec elle dans un script bash:
path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')"
echo ${path_php_ini}