web-dev-qa-db-fra.com

Comment trouver le fichier php.ini utilisé par la ligne de commande?

Je dois activer pdo_mysql dans mon environnement EasyPhp. Je suis donc allé dans le fichier php.ini et j'ai supprimé la mise en commentaire de la ligne suivante:

extension=php_pdo_mysql.dll

Malheureusement, j'ai toujours le même problème. J'utilise la CLI, donc je suppose que je dois localiser le fichier php.ini utilisé par la CLI. Comment puis-je le trouver?

357

Il suffit de lancer php --ini et de rechercher Loaded Configuration File dans la sortie pour obtenir l'emplacement de php.ini utilisé par votre CLI.

879
Mchl

Vous pouvez obtenir un phpinfo() complet en utilisant:

php -i 

Et là, il y a le fichier php.ini utilisé:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Sous Windows, utilisez find à la place:

php -i|find/i"configuration file"
355
Pascal MARTIN
php --ini

vous donnera tous les détails sur le chemin des utilisations et le ou les fichiers ini possibles

32
Lode

Vous pouvez utiliser get_cfg_var ('cfg_file_path') pour cela:

Pour vérifier si le système utilise un fichier de configuration, essayez de récupérer la valeur du paramètre de configuration cfg_file_path. S'il est disponible, un fichier de configuration est utilisé.
var_dump( get_cfg_var('cfg_file_path') );

Et vous pouvez simplement définir l'emplacement du php.ini . Vous utilisez la version en ligne de commande. Ainsi, à l'aide du paramètre -c, vous pouvez spécifier l'emplacement, par exemple.

php -c /home/me/php.ini -f /home/me/test.php
15
VolkerK

Exécutez php --ini sur votre terminal, vous obtiendrez tous les détails sur les fichiers ini

[root@tamilan src]# php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/apc.ini,
/etc/php.d/bcmath.ini,
/etc/php.d/curl.ini,
/etc/php.d/dba.ini,
/etc/php.d/dom.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/Gd.ini,
/etc/php.d/imap.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/memcache.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/ssh2.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/Zip.ini

Pour plus d'informations, utilisez la commande d'aide php --help Elle affichera toutes les options possibles.

13
Sathish

Parfois, les choses ne sont pas toujours ce qu'elles semblent quand il s'agit de configurer des fichiers en général. J'applique donc ici les méthodes habituelles pour explorer les fichiers ouverts par un processus.

J'utilise un programme en ligne de commande très puissant et utile appelé strace pour me montrer ce qui se passe réellement dans mon dos!

$ strace -o strace.log php --version
$ grep php.ini strace.log

Strace détache les appels au noyau (système) que votre programme crée et exporte la sortie dans le fichier spécifié par -o

Il est facile d’utiliser grep pour rechercher des occurrences de php.ini dans ce journal. Il est assez évident de regarder la réponse typique suivante pour voir ce qui se passe.

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0
7
thomas-peter

Si vous voulez que tous les fichiers de configuration soient chargés, ceci vous indiquera:

php -i | grep "\.ini"

Certains systèmes chargent des éléments à partir de plusieurs fichiers ini. Sur mon système Ubuntu, cela ressemble à ceci:

$  php -i | grep "\.ini"
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Scan this dir for additional .ini files => /etc/php5/cli/conf.d
additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/Gd.ini,
/etc/php5/cli/conf.d/mcrypt.ini,
/etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini
7
Reece45

Sur OSX Mavericks, en cours d'exécution:

$ php -i | grep 'Configuration File'

Revenu:

Configuration File (php.ini) Path => /etc
Loaded Configuration File:         (none)

Dans le répertoire /etc/ était:

php.ini.default

(ainsi que php-fpm.conf.default)

J'ai pu copier php.ini.default vers php.ini, ajouter date.timezone = "US/Central" en haut (juste en dessous de [php]) et le problème est résolu.

(Au moins, le message d'erreur est parti.)

6
MikeiLL

Si vous devez le transmettre à une autre application, vous pouvez faire quelque chose comme:

php --ini | grep Loaded | cut -d" " -f12

renvoie le chemin uniquement. php -c $(php --ini | grep Loaded | cut -d" " -f12) passera dans le fichier de configuration (utile pour fpm)

4
Mike Mackintosh

De ce que je me souviens quand j’utilisais EasyPHP, le fichier php.ini est soit en C:\Windows\, soit C:\Windows\System32

3
Tim Cooper

Dans votre fichier php.ini, définissez votre répertoire d’extension, par exemple:

extension_dir = "C:/php/ext/"

Vous verrez dans votre dossier PHP qu'il y a un dossier ext avec toutes les dll et leurs extensions.

1
Marc Uberstein

Faire

find / -type f -name "php.ini" 

Cela produira tous les fichiers nommés php.ini.

Trouvez celui que vous utilisez, généralement Apache2/php.ini

1
Han Van Pham