Wo finde ich php.ini?

881

Vor einigen Jahren habe ich Apache 2.2x und PHP 5.3.1 auf einem von mir gepflegten Linux-Server installiert. Ich habe .tar.gz's verwendet und sie wie angewiesen erstellt (anstelle von RPMs und What-Have-You). Und alles war gut.

Heute muss ich dies installieren, was wie eine PHP-Bibliothek erscheint. Ich habe alle Schritte bis zur Installation durchlaufen und finde ibm_db2.so in$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

Der große Haken ist, dass der letzte Schritt darin besteht, php.ini zu konfigurieren, aber auf meinem System befindet sich KEINE php.ini. Horror des Grauens. PHP funktioniert einwandfrei, außer natürlich für dieses neue ibm_db2-Ding, das ich verwenden möchte, damit jemand eine GUI zum Basteln verwenden kann DB2. (Ich habe ein kleines PHP-Skript ausprobiert, das fehlschlägt und anzeigt, dass die Funktionen von ibm_db2 nicht verfügbar sind.)

Ich muss mich alle paar Jahre mit PHP befassen. Bitte erläutern Sie mir auf einer sehr grundlegenden Ebene, was ich tun kann, um einen webbasierten GUI-Zugriff zu ermöglichen DB2.

Nekromant
quelle
120
90% der Zeit ist es /etc/php5/apache2/php.ini
Adam
6
Downvoting, weil die Prämisse der Frage falsch ist. "Es gibt KEINE php.ini auf meinem System" Nein, Sie haben es einfach nicht gefunden. Wenn Sie davon sprechen, locate php.inierfahren Sie in wenigen Augenblicken, wo sich die Datei auf Ihrem System befindet.
Leichtigkeitsrennen im Orbit
1
@ Adam: es sei denn, es ist nicht PHP5;)
Zeile
2
@line Ja, mein Kommentar ist nicht mehr zu relevant, obwohl ich die Anzahl der Upvotes nicht erkannt habe!
Adam

Antworten:

466

Der beste Weg, dies zu finden, ist: Erstellen Sie eine PHP-Datei und fügen Sie den folgenden Code hinzu:

<?php phpinfo(); ?>

und öffnen Sie es im Browser, es zeigt die Datei, die tatsächlich gelesen wird!

Updates von OP:

  1. Die zuvor akzeptierte Antwort ist wahrscheinlich schneller und bequemer für Sie, aber nicht immer richtig. Siehe Kommentare zu dieser Antwort.
  2. Bitte beachten Sie auch die <?php echo php_ini_loaded_file(); ?>in dieser Antwort erwähnte bequemere Alternative .
Tejas
quelle
11
Dies sollte die akzeptierte Antwort sein. Wenn Sie CLI installiert haben und Apache ausgeführt wird, verfügt es möglicherweise über eine eigene INI-Datei (wie mein System). Wenn Sie die akzeptierte Antwort verwenden, wird zurückgegeben, was die CLI anstelle von Apache verwendet.
Dan
2
@ Dan Ja, du hast recht. Ich ändere die akzeptierte Antwort in diese, weil das von Ihnen erwähnte Problem auch in der Praxis auf jemanden gestoßen ist (der die zuvor akzeptierte Antwort kommentiert hat). (Übrigens, wenn Sie die Frage kommentiert hätten, hätte ich dieses Problem früher behoben.)
Nekromant
2
Dies funktioniert bei meiner Installation nicht. Tippfehler? Sollte sein<?php phpinfo(); ?>
Svenyonson
9
php -r \@phpinfo\(\)\;funktioniert für mich php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1, um bestimmte Informationen zu ziehen
jgraup
@ Zylstra Versuchen Sie:<?php echo php_ini_loaded_file(); ?>
Ates Goral
834

Führen Sie in der Befehlszeile Folgendes aus:

php --ini

Sie erhalten so etwas wie:

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

Das ist von meiner lokalen Entwicklungsmaschine. Die zweite Zeile ist jedoch die interessante. Wenn nichts erwähnt wird, schauen Sie sich den ersten an. Das ist der Weg, auf dem PHP nach dem sucht php.ini.

Sie können dieselben Informationen phpinfo()in einem Skript abrufen und mit einem Browser aufrufen. Es wird im ersten Block der Ausgabe erwähnt. php -imacht das gleiche für die Kommandozeile, aber es ist ziemlich unangenehm.

KingCrunch
quelle
5
Akzeptieren der ältesten und zuvor einfachsten Antwort (SO zwingt mich, eine Weile zu warten, bevor ich akzeptiere). Vielen Dank für die Erweiterung, die wahrscheinlich der nächsten Person helfen wird, die nach Informationen sucht. Für mich stand in der zweiten Zeile (keine), und alles funktionierte einwandfrei, nachdem eine php.ini-Datei in den Pfad in der ersten Zeile eingefügt wurde. Vielen Dank!
Nekromant
12
Ich habe diesen Befehl verwendet und die Datei php.ini bearbeitet, die mich ebenfalls anleitete, und meine PHP-Einstellungen haben sich nicht geändert, und mir wurde klar, dass ich nicht die richtige Datei php.ini erhalten habe. Ich habe versucht, die PHP-Funktion phpinfo () zu verwenden, und sie gibt mir den tatsächlichen korrekten Speicherort der php.ini an, die ich bearbeiten musste. Ich denke, das ist sehr wichtig und ich hoffe, das hilft jemandem.
Thecommonthread
3
/etc/php5/apache2/php.ini
Adam
@thecommonthread Vielen Dank, dass Sie auf das Problem hingewiesen haben, auf das Sie in der Praxis gestoßen sind. Ich habe die akzeptierte Antwort in eine Antwort geändert, die das Erstellen einer .phpDatei hervorhebt . Übrigens, wenn Sie die Frage kommentieren, werde ich benachrichtigt und kann das Problem früher beheben.
Nekromant
5
@Pacerier Dies hat nichts mit verschiedenen PHP-Installationen zu tun, aber die verschiedenen SAPIs können unterschiedliche INI-Dateien verwenden. Ich benutze das Apache-Modul nicht, aber soweit ich mich erinnere, gibt es keinen Weg an einer phpinfo.phpähnlichen Datei vorbei. Mit FPM können Sie zumindest verwenden php5-fpm -i | grep '\.ini'. Normalerweise benutzt du das zwei- oder dreimal und am Ende des Tages weißt du , wo sich die Dateien befinden;)
KingCrunch
133

Das funktioniert bei mir:

php -i | grep 'php.ini'

Sie sollten etwas sehen wie:

Loaded Configuration File => /usr/local/lib/php.ini

ps Um nur den Pfad php.inin zu erhalten

php -i | grep /.+/php.ini -oE
Coderama
quelle
5
Das funktioniert aber nur, wenn es ist ein php.ini, das ist genau das Problem: Wenn es keine gibt, können Sie immer noch nicht wissen , wo zu sehen, oder wo ein neues zu setzen.
KingCrunch
Ich bin noch nie auf eine Situation gestoßen, in der es keine php.ini-Datei gibt.
Coderama
Das Ausführen dieses Befehls gibt mir Configuration File (php.ini) Path => /usr/lib, aber das Ausführen <?php phpinfo(); ?>gibt mir Loaded Configuration File: /etc/php.ini. So phpinfo()war zuverlässiger in meinem Fall.
Leo Galleguillos
2
Das ist nicht ganz richtig. Jedes Framework, das die PHP-Sprache verwendet, hat eine eigene php.ini-Datei. Wenn Sie diese Zeile über die Befehlszeile aufrufen, erhalten Sie wahrscheinlich etwas wie /var/php5/cli/php.ini, das nicht die Datei ist, die beim Ausführen von PHP in einer Webumgebung verwendet wird. Für diese Datei sollten Sie in den Ordner apache2 schauen.
Andrea Moro
63

Geben Sie im Befehlsfenster ein

php --ini

Es wird Ihnen den Weg so etwas wie zeigen

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini

Wenn der obige Befehl nicht funktioniert, verwenden Sie diesen

echo phpinfo();
bibliophilsagar
quelle
33

Dieser Befehl soll Ihnen helfen, ihn zu finden

php -r "phpinfo();" | grep php.ini
Rimantas Jacikevicius
quelle
1
Ich mag das viel mehr als einige der anderen Antworten. Es ist nicht erforderlich, dass ich eine PHP-Datei mit diesen Inhalten erstelle, suche und die Seite im Browser lade.
Andrew Allbright
29

Verwenden Sie die folgenden Befehle, um den php.iniDateipfad unter Linux zu finden.

[root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production


oder versuchen Sie es anders

[root@AnyDirectory ~]# php --ini
Es zeigt das Pfadergebnis

Sakthi Karthik
quelle
11
Dies ist Methoden wie unterlegen php -i | grep 'php.ini', da es keine php.ini findet und Ihnen nicht sagt, welche Ihre PHP-Installation verwendet. Außerdem kann es zu falschen Ergebnissen kommen, wenn die locateDatenbank nicht auf dem neuesten Stand ist.
lxg
26
phpinfo();

wird Ihnen den Standort oder die Befehlszeile mitteilen

php -i
Leniel Maccaferri
quelle
22

PHP wird mit zwei nativen Funktionen geliefert, um zu zeigen, welche Konfigurationsdatei geladen ist:

Abhängig von Ihrem Setup verwenden Apache und CLI möglicherweise unterschiedliche INI-Dateien. Hier sind die beiden Lösungen:

Apache:

Fügen Sie einfach Folgendes in eine PHP-Datei ein und öffnen Sie es in Ihrem Browser

print php_ini_loaded_file();
print_r(php_ini_scanned_files());

CLI:

Kopieren und Einfügen in Ihr Terminal:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Creaforge
quelle
Unterschätzte, gründliche und (fast) richtige Antwort. Ich habe dies fast auf die richtige Antwort umgestellt, aber ich mache mir Sorgen, dass dies php_ini_loaded_filemöglicherweise nicht immer verfügbar ist.
Nekromant
@ Zylstra Was war deine PHP-Version? die docs für php_ini_loaded_filesagen php version> = 5.2.4
necromancer
@necromancer Ich bin mir jetzt nicht sicher. Ich habe vergessen, welches System ich überprüft habe. : /
Zylstra
8
find / -name php.ini

Hey ... es hat bei mir funktioniert!

Banned_User
quelle
3
Zum einen dauert es eine Weile; für zwei, wenn Sie mehr als eine haben, woher wissen Sie, welche tatsächlich verwendet wird?
Nekromant
1
Stimmt, php --inifunktioniert, aber dies ist nur eine andere Option :) Es gibt normalerweise eine /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.iniund normalerweise ist die, die Sie wollen, ziemlich offensichtlich. (Cli, Apache, CGI)
Banned_User
Dies ist keine gute Lösung, da nicht die gesamte Datei php.ini auf der Festplatte gefunden werden soll.
4

Sie können weitere Informationen zu Ihren Konfigurationsdateien erhalten, indem Sie Folgendes verwenden:

$ -> php -i | ack config # Use fgrep -i if you don't have ack

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini
Mike Purcell
quelle
2

Versuchen Sie eine dieser Lösungen

  1. In Ihrem Terminaltyp find / -name "php.ini"

  2. In Ihrem Terminaltyp php -i | grep php.ini. Der Dateipfad sollte als angezeigt werdenConfiguration File (php.ini) Path => /etc

  3. Wenn Sie auf eine Ihrer PHP-Dateien zugreifen können, öffnen Sie diese in einem Editor (Notizblock) und fügen Sie den folgenden Code <?php in eine neue Zeile ein. phpinfo();Dadurch erfahren Sie, wo sich die PHP-Datei befindet
  4. Sie können auch im interaktiven Modus mit PHP sprechen. php -aGeben Sie einfach das Terminal ein und geben Sie phpinfo () ein. nach php initiiert.
Cherankrish
quelle
Die Punkte 1, 2 und 4 sind anfällig für mehrere Installationsprobleme. Es gibt bereits gute Antworten. Sie müssen keine Antwort hinzufügen, die hier nichts hinzufügt.
Nekromant
@necromancer erklärt Ihre Probleme im Detail, damit es für jemanden nützlich ist. Wir haben Up- und Downvote für schlechte und nutzlose Antworten und die Community wird entscheiden.
Cherankrish
-1

Es gibt bereits mehrere gültige Möglichkeiten zum Auffinden der Datei php.ini. Wenn Sie jedoch auf diese Seite gestoßen sind, weil Sie in einem Bash-Skript etwas damit tun möchten:

path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?<=\=\>\s).*')" echo ${path_php_ini}

Cragmonkey
quelle
1
Sehen Sie sich stattdessen Folgendes an : stackoverflow.com/a/24342463/621338 Anstatt es zu entfernen, was spröde ist, wenn sich der Text ändert, können Sie PHP nur den Dateinamen drucken lassen und ihn in einem Bash-Skript ohne komplizierte Dinge wie die oben genannten verwenden.
Nekromant