Où puis-je trouver php.ini?

881

Il y a quelques années, j'ai installé Apache 2.2x et PHP 5.3.1 sur un serveur Linux que je maintiens. J'ai utilisé .tar.gz et les ai construits comme indiqué (au lieu de rpms et de ce que vous avez). Et tout allait bien.

Aujourd'hui, je dois installer ce qui ressemble à une bibliothèque PHP. J'ai parcouru toutes les étapes pour faire l'installation, 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 d'horreurs. PHP fonctionne très bien, sauf bien sûr pour ce nouveau concept 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 s'il vous plaît, éclairez-moi à un niveau très basique sur ce que je pourrais faire pour permettre l'accès à l'interface graphique Web DB2.

nécromancien
la source
120
90% du temps c'est /etc/php5/apache2/php.ini
Adam
6
Votez parce que la prémisse de la question est fausse. "il n'y a AUCUN php.ini sur mon système" Non, vous n'avez tout simplement pas réussi à le localiser. En parlant de cela, locate php.inivous dira en quelques instants où le fichier est sur votre système.
Courses de légèreté en orbite
1
@Adam: sauf si ce n'est pas PHP5;)
Ligne
2
@line ouais mon commentaire n'est plus trop pertinent, même si je n'ai pas réalisé le nombre de votes positifs!
Adam

Réponses:

466

Le meilleur moyen de le trouver est de créer un fichier php et d'ajouter le code suivant:

<?php phpinfo(); ?>

et ouvrez-le dans le navigateur, il affichera le fichier en cours de lecture!

Mises à jour par OP:

  1. La réponse précédemment acceptée sera probablement plus rapide et plus pratique pour vous, mais elle n'est pas toujours correcte. Voir les commentaires sur cette réponse.
  2. Veuillez également noter l'alternative la plus pratique <?php echo php_ini_loaded_file(); ?>mentionnée dans cette réponse .
Tejas
la source
11
Ce devrait être la réponse acceptée. Si vous avez installé CLI et que Apache est en cours d'exécution, il peut avoir son propre fichier ini (comme le fait mon système). L'utilisation de la réponse acceptée renvoie ce que la CLI utilise plutôt que celui d'Apache.
Dan
2
@ Dan Oui, vous avez raison. Je modifie la réponse acceptée à celle-ci parce que le problème que vous mentionnez a également été rencontré par quelqu'un dans la pratique (qui a commenté la réponse précédemment acceptée). (Au fait, si vous aviez commenté la question, j'aurais résolu ce problème plus tôt.)
nécromancien
2
Cela ne fonctionne pas sur mon installation. Faute de frappe? Devrait être<?php phpinfo(); ?>
svenyonson
9
php -r \@phpinfo\(\)\;travaille pour moi php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1pour extraire des informations spécifiques
jgraup
@zylstra Try:<?php echo php_ini_loaded_file(); ?>
Ates Goral
834

Sur la ligne de commande, exécutez:

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

C'est de ma machine de développement locale. Cependant, la deuxième ligne est intéressante. S'il n'y a rien de mentionné, jetez un œil au premier. C'est le chemin, où PHP recherche le php.ini.

Vous pouvez utiliser les mêmes informations phpinfo()dans un script et les appeler avec un navigateur. Son mentionné dans le premier bloc de la sortie. php -ifait de même pour la ligne de commande, mais c'est assez inconfortable.

KingCrunch
la source
5
accepter la réponse la plus ancienne et auparavant la plus simple (SO m'oblige à attendre un peu avant d'accepter). merci pour l'expansion qui aidera probablement la prochaine personne à la recherche d'informations. pour moi, la 2ème ligne a dit (aucun), et tout a bien fonctionné après avoir mis un fichier php.ini dans le chemin sur la première ligne. Merci!
nécromancien
12
J'ai utilisé cette commande et édité le fichier php.ini qui me dirigeait aussi et mes paramètres PHP ne changeaient pas et j'ai réalisé qu'elle ne me donnait pas le bon fichier php.ini. J'ai essayé d'utiliser la fonction PHP phpinfo () et cela m'a donné l'emplacement correct du php.ini que j'avais besoin de modifier. Je pense que c'est très important et j'espère que cela aide quelqu'un.
comonthread
3
/etc/php5/apache2/php.ini
Adam
@thecommonthread Merci d'avoir signalé le problème que vous avez rencontré dans la pratique. J'ai changé la réponse acceptée en une réponse qui met en évidence la création d'un .phpfichier. Soit dit en passant, si vous commentez la question, je suis averti et je peux résoudre le problème plus tôt.
nécromancien
5
@Pacerier Cela n'a rien à voir avec différentes installations PHP, mais les différents SAPI peuvent utiliser différents fichiers ini. Je n'utilise pas le module apache, mais pour autant que je m'en souvienne, je pense qu'il n'y a aucun moyen de contourner un phpinfo.phpfichier de type. Avec FPM, vous pouvez au moins utiliser php5-fpm -i | grep '\.ini'. Habituellement, vous l'utilisez deux ou trois fois et à la fin de la journée, vous savez où se trouvent les fichiers;)
KingCrunch
133

Cela fonctionne pour moi:

php -i | grep 'php.ini'

Vous devriez voir quelque chose comme:

Loaded Configuration File => /usr/local/lib/php.ini

ps Pour obtenir uniquement le chemin php.inin

php -i | grep /.+/php.ini -oE
coderama
la source
5
Cela ne fonctionne que s'il est un php.ini, ce qui est exactement le problème: S'il n'y en a pas, vous ne savez toujours pas où regarder, ou où placer un nouveau.
KingCrunch du
Je n'ai jamais rencontré de situation où il n'y a pas de fichier php.ini.
coderama
L'exécution de cette commande me donne Configuration File (php.ini) Path => /usr/lib, mais la course <?php phpinfo(); ?>me donne Loaded Configuration File: /etc/php.ini. Donc, phpinfo()était plus fiable dans mon cas.
Leo Galleguillos
2
Ce n'est pas tout à fait correct. Chaque framework qui utilise le langage PHP a son propre fichier php.ini. Si vous appelez cette ligne à partir de la ligne de commande, vous finirez probablement par recevoir quelque chose comme /var/php5/cli/php.ini qui n'est pas le fichier utilisé lors de l'exécution de PHP sur un environnement Web. Pour ce fichier, vous devriez regarder dans le dossier apache2.
Andrea Moro
63

Dans le type de fenêtre de commande

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-la

echo phpinfo();
bibliophilsagar
la source
33

Cette commande devrait vous aider à la trouver

php -r "phpinfo();" | grep php.ini
Rimantas Jacikevicius
la source
1
J'aime bien plus que certaines des autres réponses. Il ne nécessite pas que je crée, trouve un fichier php avec ces contenus et charge la page dans le navigateur.
Andrew Allbright
29

Utilisez les commandes suivantes pour trouver le php.inichemin du fichier 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
son montre le résultat du chemin

Sakthi Karthik
la source
11
C'est inférieur aux méthodes comme php -i | grep 'php.ini', car il trouve n'importe quel php.ini et ne vous dit pas lequel utilise votre installation PHP. En outre, cela peut donner des résultats erronés lorsque la base de locatedonnées n'est pas à jour.
lxg
26
phpinfo();

vous indiquera son emplacement, ou à partir de la ligne de commande

php -i
Leniel Maccaferri
la source
22

PHP est livré avec deux fonctions natives pour montrer quel fichier de configuration est chargé:

Selon votre configuration, Apache et CLI peuvent utiliser des fichiers ini différents. 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:

Copiez-collez dans votre terminal:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Creaforge
la source
Réponse sous-estimée, approfondie et (presque) correcte. J'ai failli passer à la bonne réponse, mais je crains que ce php_ini_loaded_filene soit pas toujours disponible.
nécromancien
@zylstra quelle était votre version php? les documents pour php_ini_loaded_filedire la version php> = 5.2.4
nécromancien
@necromancer Pas sûr maintenant. J'ai oublié le système que je vérifiais. : /
zylstra
8
find / -name php.ini

Hé ... ça a marché pour moi!

Banned_User
la source
3
pour un, cela prend un certain temps; pour deux, si vous en avez plusieurs, comment savez-vous lequel est réellement utilisé?
nécromancien
1
C'est vrai, php --iniça marche, mais c'est juste une autre option :) Il y a généralement une /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.iniet généralement celle que vous voulez est assez évidente. (cli, apache, cgi)
Banned_User
Ce n'est pas une bonne solution, car nous ne sommes pas destinés à trouver tout le fichier php.ini sur le disque.
4

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
Mike Purcell
la source
2

Essayez l'une de ces solutions

  1. Dans votre type de terminal find / -name "php.ini"

  2. Dans votre type de terminal php -i | grep php.ini. Il doit montrer le chemin du fichier commeConfiguration File (php.ini) Path => /etc

  3. Si vous pouvez accéder à l'un de vos fichiers php, ouvrez-le dans un éditeur (bloc-notes) et insérez le code ci-dessous après <?php dans une nouvelle ligne phpinfo();Cela vous indiquera l'emplacement de php.ini
  4. Vous pouvez également parler à php en mode interactif. Tapez simplement php -ale terminal et tapez phpinfo (); après php initié.
cherankrish
la source
les points 1, 2 et 4 sont vulnérables à de multiples problèmes d'installation; il y a déjà d'excellentes réponses. pas besoin d'ajouter une réponse qui n'ajoute rien ici.
nécromancien
@necromancer explique vos problèmes en détail afin que cela soit utile pour quelqu'un. Nous avons des votes positifs et négatifs pour les réponses mauvaises et inutiles et la communauté décidera.
cherankrish
-1

Il existe plusieurs méthodes valides déjà mentionnées pour localiser le fichier php.ini, mais si vous êtes tombé sur cette page parce que vous voulez en faire quelque chose dans un script bash:

path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')" echo ${path_php_ini}

Cragmonkey
la source
1
voyez ceci à la place: stackoverflow.com/a/24342463/621338 au lieu de le saluer, ce qui est fragile si le texte change, vous pouvez demander à php d'imprimer uniquement le nom du fichier et de l'utiliser dans un script bash sans des trucs compliqués comme ci-dessus.
nécromancien