486 Stimmen

Wie kann ich die vom Befehlszeilen-Interface verwendete php.ini-Datei finden?

Ich muss pdo_mysql in meiner EasyPHP-Umgebung aktivieren, also bin ich zur php.ini-Datei gegangen und habe die folgende Zeile auskommentiert:

extension=php_pdo_mysql.dll

Leider habe ich immer noch das gleiche Problem. Ich benutze die CLI, also gehe ich davon aus, dass ich die php.ini-Datei für die CLI finden muss. Wie kann ich sie finden?

0 Stimmen

0 Stimmen

@sjas Es ist nicht falsch, es ist korrekt und informiert Sie über den Pfad des geladenen php.ini in der Befehlszeile.

0 Stimmen

EasyPHP (wahrscheinlich) impliziert Windows. Vielleicht als solches taggen?

1118voto

Mchl Punkte 60035

Führen Sie einfach php --ini aus und suchen Sie in der Ausgabe nach Loaded Configuration File um den Ort der verwendeten php.ini für Ihre CLI zu finden.

12 Stimmen

@BradFJacobs warum grep verwenden, wenn dies jetzt plattformübergreifend ist?

0 Stimmen

Aber zeigt dies nicht einfach diejenige, die geladen wird, wenn PHP über die CLI ausgeführt wird (weil Sie den Befehl von dort aus ausführen).

2 Stimmen

@AntonyD'Andrea: Das ist genau das, worum es in der Frage geht. Siehst du? Es steht sogar im Titel: Wie finde ich die php.ini-Datei, die vom Befehlszeile verwendet wird?

403voto

Pascal MARTIN Punkte 384469

Sie können ein vollständiges phpinfo() erhalten, indem Sie Folgendes verwenden:

php -i

Und dort befindet sich die verwendete php.ini-Datei:

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

Verwenden Sie auf Windows stattdessen find:

php -i | find/i"configuration file"

0 Stimmen

Ich habe das gemacht, aber das Seltsame ist, dass es mir den Pfad C:\WINDOWS anzeigt. Und ich habe es dort nicht gefunden?

0 Stimmen

Der Name der Datei ist immer noch: php.ini richtig? Oder etwas, das zumindest mit php beginnt?

13 Stimmen

Dann hat diese PHP-Instanz überhaupt keine php.ini verwendet, sondern die Standardwerte. Die Konfigurationsdatei-Zeile von phpinfo() zeigt den letzten Ort an, an dem PHP nach einer ini-Datei gesucht hat. Das kann entweder der Ort sein, an dem es eine solche Datei gefunden hat, oder die letzte Option, die zufällig %SYSTEMROOT% unter Windows ist.

21voto

VolkerK Punkte 93746

Sie können dafür get_cfg_var('cfg_file_path') verwenden:

Um zu überprüfen, ob das System eine Konfigurationsdatei verwendet, versuchen Sie den Wert der Konfigurationseinstellung cfg_file_path abzurufen. Wenn dieser verfügbar ist, wird eine Konfigurationsdatei verwendet.

Im Gegensatz zu phpinfo() wird es anzeigen, wenn es keine php.ini gefunden/verwendet hat.

var_dump( get_cfg_var('cfg_file_path') );

Und Sie können einfach den Standort der php.ini festlegen. Sie verwenden die Befehlszeilenversion, so dass Sie mit dem Parameter -c den Ort für diesen bestimmten Lauf angeben können, z. B.

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

0 Stimmen

Ist es eine dauerhafte Veränderung oder nicht? Können Sie in Ihrer Antwort explizit darauf eingehen?

19voto

Sathish Punkte 3367

Führen Sie php --ini in Ihrem Terminal aus, und Sie erhalten alle Details zu den Ini-Dateien:

Konfigurationsdatei (php.ini) Pfad: /etc
Geladene Konfigurationsdatei:         /etc/php.ini
Suche nach zusätzlichen .ini-Dateien in: /etc/php.d
Zusätzlich analysierte .ini-Dateien:      /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

Verwenden Sie für mehr Informationen den Hilfsbefehl php --help. Er zeigt alle möglichen Optionen an.

11voto

thomas-peter Punkte 7440

Manchmal sind Dinge nicht immer so, wie sie scheinen, wenn es um Konfigurationsdateien im Allgemeinen geht. Hier wende ich meine üblichen Methoden an, um zu erkunden, welche Dateien von einem Prozess geöffnet werden.

Ich verwende ein sehr leistungsstarkes und nützliches Kommandozeilenprogramm namens strace, um mir zu zeigen, was wirklich hinter meinem Rücken passiert!

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

Strace spürt Kernel (System) Aufrufe auf, die Ihr Programm macht, und speichert die Ausgabe in die Datei, die durch -o angegeben ist.

Es ist einfach, grep zu verwenden, um nach Vorkommen der Datei php.ini in diesem Log zu suchen. Es ist ziemlich offensichtlich, wenn man sich die folgende typische Antwort ansieht, um zu sehen, was passiert.

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0

1 Stimmen

php -i gab mir falsche Ergebnisse, aber dieser ist perfekt. Danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X