1071 votes

Où puis-je trouver le fichier php.ini ?

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é des .tar.gz et les ai construits comme indiqué (au lieu des rpms et autres). Et tout allait bien.

Aujourd'hui, je dois installer ce qui semble être une bibliothèque PHP. Je suis passé par toutes les étapes jusqu'à make install, et j'ai trouvé ibm_db2.so dans $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so .

Le gros problème est que la dernière étape consiste à configurer le fichier php.ini mais il n'y en a pas. tout php.ini sur mon système. L'horreur des horreurs. PHP fonctionne bien, sauf bien sûr pour ce nouveau truc 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 script qui échoue et indique que les fonctions ibm_db2 ne sont pas disponibles).

J'ai affaire à PHP une fois tous les deux ans, alors éclairez-moi à un niveau très basique sur ce que je pourrais faire pour permettre un accès GUI basé sur le web à DB2.

138 votes

90 % du temps, c'est /etc/php5/apache2/php.ini.

0 votes

12 votes

La prémisse de la question est fausse. "il n'y a PAS de php.ini sur mon système" Non, vous n'avez simplement pas réussi à le localiser. En parlant de ça, locate php.ini vous dira en quelques instants où se trouve le fichier sur votre système.

1061voto

KingCrunch Points 45168

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

Ça vient de ma machine de développement locale. Cependant, la deuxième ligne est la plus intéressante. S'il n'y a rien de mentionné, regardez la première. C'est le chemin, où PHP recherche le fichier php.ini fichier.

Vous pouvez récupérer les mêmes informations en utilisant phpinfo() dans un script et l'appeler avec un navigateur. C'est mentionné dans le premier bloc de la sortie. php -i fait la même chose pour la ligne de commande, mais c'est assez inconfortable.

5 votes

Accepter la réponse la plus ancienne et précédemment la plus simple (SO me force à attendre un moment avant d'accepter). merci pour l'expansion qui aidera probablement la prochaine personne cherchant des informations. pour moi la 2ème ligne disait (none), et tout a bien fonctionné après avoir mis un fichier php.ini dans le chemin de la première ligne. merci !

20 votes

J'ai utilisé cette commande et modifié le fichier php.ini vers lequel elle me dirigeait. 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 elle m'a donné l'emplacement correct du fichier php.ini que je devais modifier. Je pense que c'est très important et j'espère que cela aidera quelqu'un.

0 votes

@thecommonthread Merci de m'avoir signalé le problème que vous avez rencontré en pratique. J'ai modifié la réponse acceptée pour qu'elle mette l'accent sur la création d'un fichier .php fichier. D'ailleurs, si vous commentez la question, j'en suis informé et je peux résoudre le problème plus rapidement.

543voto

Napster Points 626

La meilleure façon de le savoir est :

Créer un fichier PHP ( .php ) et ajoutez le code suivant :

<?php phpinfo(); ?>

et l'ouvrir dans un navigateur. Vous verrez alors le fichier qui est en train d'être lu !

Mises à jour par l'OP :

  1. L'accord précédemment accepté respuesta est 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 plus pratique <?php echo php_ini_loaded_file(); ?> mentionné dans cette réponse .

12 votes

Cela devrait être la réponse acceptée. Si vous avez installé CLI et qu'apache fonctionne, alors il peut avoir son propre fichier ini (comme mon système). L'utilisation de la réponse acceptée renvoie ce que le CLI utilise plutôt que celui d'apache.

2 votes

Dan Oui, vous avez raison. Je change la réponse acceptée par celle-ci car 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). (D'ailleurs, si vous aviez commenté la question, j'aurais corrigé ce problème plus tôt).

2 votes

Cela ne fonctionne pas sur mon installation. Une faute de frappe ? Devrait être <?php phpinfo(); ?>

167voto

coderama Points 2017

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 uniquement le chemin du php.ini, utilisez :

php -i | grep /.+/php.ini -oE

7 votes

Cela ne fonctionne que s'il y a est a php.ini Ce qui est exactement le problème : s'il n'y en a pas, vous ne savez toujours pas où chercher, ni où en placer un nouveau.

0 votes

Je n'ai jamais rencontré une situation où il n'y a pas de fichier php.ini.

0 votes

L'exécution de cette commande me donne Configuration File (php.ini) Path => /usr/lib mais en courant <?php phpinfo(); ?> me donne Loaded Configuration File: /etc/php.ini . Donc, phpinfo() était plus fiable dans mon cas.

31voto

Creaforge Points 898

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

En fonction de votre configuration, Apache y CLI peuvent utiliser des fichiers .ini différents. Voici les deux solutions :

Apache :

Il suffit d'ajouter les éléments suivants dans un fichier PHP (.php) et de l'ouvrir 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());'

1 votes

Réponse sous-estimée, complète et (presque) correcte. J'ai failli changer cela en réponse correcte mais je crains que php_ini_loaded_file ne sont pas toujours disponibles.

0 votes

@zylstra quelle était votre version de php ? les docs de php_ini_loaded_file indiquer une version de php >= 5.2.4

0 votes

@necromancer Pas sûr maintenant. J'ai oublié quel système je vérifiais. :/

27voto

Dagon Points 12865
phpinfo();

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

php -i

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X