Comment trouver le php.fichier ini utilisé par la ligne de commande?
j'ai besoin d'activer pdo_mysql dans mon environnement EasyPhp, donc je suis allé à php.fichier ini et décommenté la ligne suivante:
extension=php_pdo_mysql.dll
Malheureusement j'ai toujours le même problème. J'utilise le CLI donc je suppose que je dois localiser le php.fichier ini utilisé par le CLI. Comment puis-je le trouver?
13 réponses
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
sur Windows, utilisez find
à la place:
php -i|find/i"configuration file"
php --ini
vous donnera tous les détails sur le chemin d'utilisation et le(S) fichier (s) ini possible
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. Si c'est disponible, un fichier de configuration est utilisé.contrairement à phpinfo (), il dira s'il n'a pas trouvé/utilisé un php.ini.
var_dump( get_cfg_var('cfg_file_path') );
et vous pouvez simplement ensemble l'emplacement de la php.ini . Vous utilisez la version en ligne de commande, donc en utilisant le paramètre -c
vous pouvez spécifier l'emplacement, par exemple
php -c /home/me/php.ini -f /home/me/test.php
Run php --ini
dans 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.
si vous voulez que tous les fichiers de configuration soient chargés, cela vous dira:
php -i | grep "\.ini"
certains systèmes chargent des objets à partir de plus d'un fichier ini. Sur mon système ubuntu, il 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
parfois, les choses ne sont pas toujours ce qu'elles semblent lorsqu'il s'agit de fichiers de configuration en général. Donc ici j'applique mes méthodes habituelles pour explorer quels fichiers sont ouverts par un processus.
j'utilise un programme de ligne de commande très puissant et utile appelé strace pour me montrer ce qui se passe vraiment derrière mon dos!
$ strace -o strace.log php --version
$ grep php.ini strace.log
Strace déterre les appels du noyau (système) que votre programme fait et vide 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 en regardant 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
sur OSX Mavericks, en cours d'exécution:
$ php -i | grep 'Configuration File'
Retourné:
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
en 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.)
Si vous avez besoin de passer à une autre application, vous pouvez faire quelque chose comme:
php --ini | grep Loaded | cut -d" " -f12
renvoie le chemin. php -c $(php --ini | grep Loaded | cut -d" " -f12)
passera dans le fichier de configuration (utile pour fpm
)
D'après ce que je me souviens quand J'utilisais EasyPHP, le php.le fichier ini est soit dans C:\Windows\
ou C:\Windows\System32
dans votre php.définissez votre répertoire d'extension, E. g:
extension_dir = "C:/php/ext/"
vous verrez dans votre dossier PHP il y a un dossier ext avec toutes les dll et extensions.
Faire
find / -type f -name "php.ini"
cela affichera tous les fichiers nommés php.ini
.
trouvez celui que vous utilisez, habituellement apache2/php.ini
il n'y a pas de php.ini utilisé par la ligne de commande. Vous devez copier le fichier de ...EasyPHP-<<version>>\apache\php.ini
à ...EasyPHP-<<version>>\php\php.ini
que d'éditer celui de php directory
référence: