PHP Wie man Konfigurationseinstellungen ändern
Wie man Konfigurationseinstellungen ändern
Ausführen von PHP als Apache-Modul
Wenn PHP als Apache-Modul verwenden, können Sie auch die Konfigurationseinstellungen ändern Richtlinien in Apache-Konfigurationsdateien (z httpd.conf) und .htaccess-Dateien. Sie werden „AllowOverride Options“ oder „AllowOverride All“ Privilegien müssen, dies zu tun.
Es gibt mehrere Apache-Direktiven, die es Ihnen ermöglichen, aus den Apache-Konfigurationsdateien, die PHP-Konfiguration zu ändern. Für eine Liste von Direktiven sind PHP_INI_ALL. PHP_INI_PERDIR. oder PHP_INI_SYSTEM. haben einen Blick auf die Liste der php.ini-Direktiven Anhang.
php_value Name Wert
Legt den Wert der angegebenen Richtlinie. Kann nur mit PHP_INI_ALL und PHP_INI_PERDIR Typ-Richtlinien verwendet werden. einen zuvor eingestellten Wert Verwendung keine als Wert zu löschen.
Hinweis. Don # 't Verwendung php_value zu boolean Werte gesetzt. php_flag (siehe unten) sollte stattdessen verwendet werden.
php_flag Name on | off
Setzt eine boolesche Konfigurationsdirektive. Kann nur mit PHP_INI_ALL und PHP_INI_PERDIR Typ-Richtlinien verwendet werden.
php_admin_value Name Wert
Legt den Wert der angegebenen Richtlinie. Dies kann nicht in .htaccess-Dateien verwendet werden. Jeder Direktive Typ festgelegt mit php_admin_value kann nicht durch .htaccess oder ini_set außer Kraft gesetzt werden (). einen zuvor eingestellten Wert Verwendung keine als Wert zu löschen.
php_admin_flag Name on | off
Setzt eine boolesche Konfigurationsdirektive. Dies kann nicht in .htaccess-Dateien verwendet werden. Jeder Direktive Typ festgelegt mit php_admin_flag kann nicht durch .htaccess oder ini_set außer Kraft gesetzt werden ().
Beispiel # 1 Apache Konfigurationsbeispiel
PHP-Konstanten existieren nicht außerhalb von PHP. Zum Beispiel in httpd.conf können Sie nicht PHP-Konstanten wie E_ALL oder E_NOTICE verwenden, um die error_reporting Direktive zu setzen, da sie keine Bedeutung haben wird und auf 0 Verwenden Sie die zugehörigen Bitmaskenwerte statt bewerten. Diese Konstanten können in der php.ini verwendet werden
Ändern PHP-Konfiguration über den Windows-Registry
mit der Windows-Registrierung, wenn PHP unter Windows ausgeführt wird, können die Konfigurationswerte auf einer pro-Verzeichnis Basis modifiziert werden. Die Konfigurationswerte werden im Registrierungsschlüssel HKLM \ SOFTWARE \ PHP \ Pro Directory-Werte gespeichert. in den Unterschlüssel auf den Pfadnamen entspricht. Zum Beispiel Konfigurationswerte für das Verzeichnis c: \ inetpub \ wwwroot würden im Schlüssel HKLM \ SOFTWARE \ PHP \ Pro Directory-Werte \ c \ inetpub \ wwwroot gespeichert werden. Die Einstellungen für das Verzeichnis würden für jedes Skript aus diesem Verzeichnis oder ein Unterverzeichnis davon läuft aktiv sein. Die Werte unter dem Schlüssel sollte den Namen der PHP-Konfigurationsdirektive und der String-Wert haben. PHP-Konstanten in den Werten werden nicht analysiert. Es kann jedoch nur Konfigurationswerte veränderbar in PHP_INI_USER diese Weise gesetzt werden, können PHP_INI_PERDIR Werte nicht.
Weitere Schnittstellen zu PHP
Unabhängig davon, wie Sie PHP ausführen, können Sie bestimmte Werte zur Laufzeit Ihrer Skripte durch ini_set (ändern). Lesen Sie die Dokumentation auf der ini_set () Seite für weitere Informationen.
Wenn Sie in einer vollständigen Liste der Konfigurationseinstellungen auf Ihrem System mit den aktuellen Werten interessiert sind, können Sie die Funktion phpinfo (), durchführen und die resultierende Seite überprüfen. Sie können auch die Werte einzelner Konfigurationsdirektiven zur Laufzeit Zugriff mit ini_get () oder get_cfg_var ().
Anwender-Beitrag Notizen 13 Notizen
Öffnen Sie php.ini von c: / php in Ihrem Texteditor
Wenn Sie Apache im Standardverzeichnis installiert ist, sollte der Pfad
sein "C: \ Programme \ Apache Software Foundation \ Apache2.2 \ htdocs". Wenn Sie installiert
es findet anderswo, den htdocs Ordner und seinen Pfad eingeben:
doc_root = "C: \ Programme \ Apache Software Foundation \ Apache2.2 \ htdocs"
Nur ein wenig weiter unten in der Datei, suchen Sie nach der Zeile, die das Semikolon von Anfang des extension_ mit Entfernen beginnt
dir, und legen Sie es so, dass es auf die ext Unterordner Ihres PHP Ordner verweist:
extension_dir = "C: \ PHP \ ext"
Dies sind optionale Erweiterungen zu PHP, standardmäßig deaktiviert. Wir
will die MySQL-Erweiterung aktivieren, so dass PHP mit MySQL kommunizieren.
Dazu entfernen Sie das Semikolon aus dem Beginn der php_mysqli.dll Linie:
extension = php_mysqli.dll
beachten - php_mysqli, nicht php_mysql
Halten Sie weiter unten in der Datei scrollen, und suchen Sie nach einer Zeile, die mit
; Session.save_path. Wieder einmal, entfernen Sie das Semikolon diese Zeile zu ermöglichen,
und legen Sie es auf Ihrem Windows-Temp-Ordner:
session.save_path = "C: \ Windows \ Temp"
Wechseln Sie zu dem Conf Unterordner in Ihrem Apache
Installationsordner (standardmäßig C: \ Programme \ Apache Software
Stiftung \ Apache2.2 \ conf) und wählen Sie die Datei httpd.conf dort angesiedelt. In Ordnung
Diese Datei sichtbar für die Auswahl zu machen, müssen Sie Alle Dateien (*. *) aus der Auswahl
Dateityp Dropdown-Menü am unteren Rand des geöffneten Fensters.
Achten Sie auf die bestehende Linie in dieser Datei, die mit DirectoryIndex- beginnt, gezeigt
Hier:
DirectoryIndex- index.html
Diese Zeile weist Apache, die verwendet werden Dateinamen, wenn es für die Standard-Seite sieht
für ein bestimmtes Verzeichnis. In index.php zum Ende dieser Zeile:
DirectoryIndex- index.html index.php
Alle übrigen Optionen in dieser langen und einschüchternd Konfigurationsdatei
sollte korrekt vom Apache-Programm installieren eingerichtet wurden. Alles was du brauchst
die folgenden Zeilen am Ende der Datei zu tun ist hinzuzufügen:
LoadModule- Module php5_module "C: /PHP/php5apache2_2.dll"
AddType application / x-httpd-php .php
PHPIniDir "C: / PHP"
Achten Sie darauf, die LoadModule- und PHPIniDir Linien verweisen auf Ihre PHP-Installation
Verzeichnis, und beachten Sie die Verwendung von Schrägstrichen (/) anstelle von Schrägstrichen (\) in
die Wege.
Speichern Sie Ihre Änderungen und Neustart Apache den Apache Service Monitor System-Tray-Symbol. Wenn alles
na ja, wird Apache starten wieder ohne Beanstandung.
PHP unter Apache laufen stellt ein großes Problem, wenn es um die Konfigurationseinstellungen per-Verzeichnis kommt für PHP. In Apache Virtual Hosting, nur eine Master-PHP-Konfigurationsdatei (das heißt php.ini) wird zur Laufzeit per PHP-Skript analysiert. Unter IIS 6.0 oder höher, können Sie pro-Verzeichnis PHP-Konfigurationsdateien enthalten außer Kraft zu setzen oder die Master-Konfigurationseinstellungen überschreiben. Das Problem hierbei ist jedoch mit Apache virtuellen Hosts überschreiben / überschreiben Master-Einstellungen; nicht, was kann IIS tun.
So gibt es zwei mögliche Lösungen. Die erste Lösung ist in diesem Abschnitt beschrieben und verwendet den Apache-Konfigurationseinstellungen php_value, php_flag, php_admin_value und php_admin_flag. Dadurch, dass jeder virtuellen Host, die Sie möchten bestimmte Konfigurationseinstellungen geändert haben, müssen diese Richtlinien gesetzt haben (und das ist für jeden PHP-Konfigurationseinstellung). Dies ist für mich, ist die tragfähige Lösung, obwohl es zeitaufwendig und geistig zu besteuern ist.
Die andere mögliche Lösung ist es, die PHPRC Umgebungsvariable zu setzen. Meines Wissens sind alle Implementierungen von Apache HTTPD ermöglichen die SetEnv Richtlinie die PHPRC Variable pro-virtual-Host zu setzen. Was das tut, ist PHP zu sagen, in der angegebenen Position zu suchen, den virtuellen Konfigurationseinstellungen Datei des Hosts (das heißt „C: /path/to/custom/php.ini“). Der einzige Nachteil dieser Taktik ist, dass jeder individuelle php.ini-Datei des virtuellen Hosts müssen alle eingestellten Parameter enthalten. Mit anderen Worten, muss jeder einzelne PHP-Konfigurationsdirektive Sie in der Master-Datei php.ini gesetzt haben auch in pro-virtual-Host-Konfigurationseinstellungen festgelegt werden. Nicht, dass saugen? Es scheint eher überflüssig zu mir (und besiegt völlig den Zweck), die Sie alle Konfigurationseinstellungen wieder und wieder schließen müssen.
Ich hoffe das hilft!
Ich habe in Bezug auf den von der Apache Direktive SetEnv gesetzt PHPRC Umgebungsvariable einige gründlichen Prüfung auf meinem PC. Es scheint mir, dass diese Variable vollständig, dass die Direktive nicht berücksichtigt. Ich habe alles versucht und kann nur zu dem Schluss kommen, dass entweder A) Ich habe etwas sehr falsch gemacht haben, oder B), dass es einfach nicht wie erwartet funktionieren.
Die frühere Lösung ist jedoch nicht auf magische Weise der Arbeit! Also, auf meinem vorherigen Post zu erweitern, die einzige wirkliche und dauerhafte Lösung für dieses Problem ist die php_value, php_flag, php_admin_value und php_admin_flag Richtlinien in Ihren virtuellen Hosts Konfigurationen zu verwenden.
Noch einmal, es kann sehr langweilig sein! Aber es funktioniert.
Registry Key Handling durch PHP:
Dies ist eine betriebsbereit Code zu verwenden. Sie müssen nur diesen Code in eine PHP-Datei kopieren.
// PHP-Code beginnt von hier.
// Lesen der Registry
$ WshShell = new COM ( 'WScript.Shell');
$ Data = $ Wshshell-> RegRead ( 'HKEY_LOCAL_MACHINE \ SOFTWARE \ 7-Zip \ path');
echo "Data ist ::" $ data.
// Funktion für Schreiben in die Registrierung.
Funktion registry_write ($ Ordner, $ key, $ value, geben Sie $ = "REG_SZ")
$ WshShell = new COM ( "WScript.Shell");
$ Registry = "HKEY_LOCAL_MACHINE \\ SOFTWARE". $ Ordner. "". $ Key;
führen versuchen $ = $ WshShell-> RegWrite ($ registry, $ value, $ type);
echo "Der Eintritt ist erfolgreich geschrieben am:". $ registry;
return ($ result);
>
. Catch (Exception $ e) echo "Einige Exception in Registry schreiben" $ e;
>
// Funktion aus dem Registereintrag zu löschen.
Funktion registry_delete ($ Ordner, $ key, $ value, geben Sie $ = "REG_SZ")
$ WshShell = new COM ( "Wscript.shell");
$ Registry = "HKEY_LOCAL_MACHINE \\ SOFTWARE". $ Ordner. "". $ Key;
führen versuchen $ = $ WshShell-> RegDelete ($ registry);
echo $ Schlüssel. "wird erfolgreich von HKEY_LOCAL_MACHINE \\ SOFTWARE gelöscht". $ Ordner;
return ($ result);
>
catch (Exception $ e) echo "Einige Exception mit dem Code ::" $ e.
>
falsch zurückgeben;
// Hier 7-ZIP ist als Beispiel genommen.
$ Folder = "7-ZIP";
$ Key = "Key_name";
$ Value = "Key_Value";
Für Mac-Anwender (Leopard / Tiger / Lion) es lohnt sich zu wissen, wo genau Ihre httpd.conf und php.ini ares aufgenommen, aber aus dem Kasten heraus, werden diese nur in den Compiler-Einstellungen als Standardwerte definiert.
Der httpd binary wurde mit den Standardeinstellungen erstellt von
SERVER_CONFIG_FILE = "/ private / etc / apache2 / httpd.conf"
Start Apache Bedeutung apachectl mit nimmt diese httpd.conf, ohne sie über die org.apache.httpd.plist Datei / LaunchDaemons ist / System / Library auf der Befehlszeile angegeben werden.
Auch hier ist der Standard httpd.conf keine PHPIniDir enthalten, und lokalisiert php.ini über libphp5.so in / etc - müssten Sie ein hier schaffen (eine der php.ini.default Vorlagen verwenden, wenn Sie möchten).
Es lohnt sich, die PHPIniDir Einstellung in httpd.conf Wechsel auf zB Einstellung .:
Konfigurationsdatei /usr/local/php5/lib/php.ini
so dass Sie genau wissen, welche php.ini ist jederzeit verwendet werden.
phpinfo () berät Sie dann, dass es diese Datei ist verwenden.