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?
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.
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"
php --ini
vous donnera tous les détails sur le chemin des utilisations et le ou les fichiers ini possibles
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
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.
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
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
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.)
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
)
De ce que je me souviens quand j’utilisais EasyPHP, le fichier php.ini est soit en C:\Windows\
, soit C:\Windows\System32
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.
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