Verwendung von PHP über die Befehlszeile. Interaktive Konsolenanwendung in PHP

Ich habe beschlossen, diesen Artikel allen zu widmen, die mit dem Lernen beginnen PHP weil jeder den gleichen Fehler bekommt. Ich weiß nicht, warum sie es zulassen, aber sie tun es ständig. Ich kann ohne Übertreibung sagen, dass ich bereits etwa hundert Fragen erhalten habe, die in diesem Artikel beantwortet werden. Dieser Fehler hängt mit zusammen fehlerhafter Start in PHP.

Wie fast alle Anfänger:

  1. Erstellen PHP-Datei(Manchmal HTML-Datei, aber das sind die meisten Anfänger).
  2. Schreiben Sie es dort auf PHP-Code.
  3. Und sie doppelklicken, um es im Browser zu öffnen.

Das Ergebnis ist, dass der Browser den Code öffnet, es aber nicht eilig hat, ihn auszuführen. Es zeigt einfach einige Codeteile im Klartext an oder zeigt überhaupt nichts an.

Der Fehler dieses Ansatzes besteht darin, dass der Schüler das nicht versteht PHP ist eine serverseitige Sprache, nicht Kunde. Das HTML oder JavaScript Client-Sprachen werden selbstverständlich vom Browser verarbeitet. Aber für PHP benötigt einen Interpreter. Und dieser Interpreter wird vom Server gestartet.

Abschluss: Sie müssen PHP-Code über den Server ausführen. Wenn Sie haben Denwer, das heißt, durch ihn.

Jetzt, wie man PHP-Code über Denwer ausführt. Die meisten Anfänger machen den gleichen Fehler noch einmal. Sie scheinen alles richtig zu machen, etwas zu erschaffen erforderliche Ordner, Neustart Denwer und es scheint, dass nur noch die Datei korrekt aufgerufen werden muss. Aber auch hier liegt ein Fehler vor: Sie öffnen die Datei erneut einfach im Browser (entweder durch Ziehen der Datei in den Browser oder durch Doppelklick). Dies ist leicht an der Adresse in der Adressleiste zu erkennen. Es wird so etwas geben wie: file:///Z:\home\mysite.local\www\script.php.

Und Sie müssen es richtig starten, Eingabe der Adresse virtueller Host . Geben Sie also direkt in die Adressleiste des Browsers Folgendes ein: http://mysite.local/script.php- Das war’s, jetzt wird das Skript ausgeführt und zeigt sein Ergebnis an.

Ich hoffe, dass dieser Artikel vielen Anfängern hilft, die gerade erst anfangen zu lernen PHP.

Es gibt drei in der SAPI-CLI verschiedene Wege PHP-Code ausführen:

    Angeben einer bestimmten Datei, die ausgeführt werden soll.

    $ php mein_script.php $ php -f mein_script.php

    Beide Methoden (mit Angabe der Option -F oder ohne) führt die Datei my_script.php aus. Sie können eine beliebige Datei zum Ausführen auswählen und Ihre PHP-Skripte müssen nicht über die Erweiterung verfügen .php und kann einen beliebigen Namen und eine beliebige Erweiterung haben.

    Kommentar:

    Wenn Sie Argumente an Ihre Skripte übergeben müssen, dann bei Verwendung der Option -F Das erste Argument sollte sein -- .

  1. Übergeben Sie PHP-Code direkt in der Befehlszeile.

    $ php -r "print_r(get_defined_constants());"

    Sie müssen bei der Verwendung dieser Methode besonders vorsichtig sein, da es bei der Verwendung von doppelten Anführungszeichen zu einer Ersetzung von Shell-Variablen kommen kann.

    Kommentar:

    Bitte lesen Sie das Beispiel sorgfältig durch, es enthält keine öffnenden oder schließenden Tags! Möglichkeit -R es braucht sie einfach nicht. Ihre Verwendung führt zu einem Parserfehler.

  2. Übergeben Sie den laufenden PHP-Code über die Standardeingabe ( stdin).

    Dies bietet die leistungsstarke Möglichkeit, PHP-Code dynamisch zu generieren und in die Startdatei einzuspeisen, wie in diesem (falschen) Beispiel gezeigt:

    $some_application | some_filter | php | sort -u > final_output.txt

Sie können keine dieser drei Möglichkeiten zum Ausführen von Code kombinieren.

Wie jede andere Konsolenanwendung, eine PHP-Binärdatei akzeptiert Argumente, aber Ihr PHP-Skript kann auch Argumente akzeptieren. PHP begrenzt die Anzahl der an Ihr Skript übergebenen Argumente nicht (die Konsolen-Shell legt einen Schwellenwert für die Anzahl der Zeichen fest, die übergeben werden können; diese Begrenzung ist normalerweise ausreichend). Die übergebenen Argumente stehen im globalen Array $argv zur Verfügung. Der erste Index (Null) enthält immer den Namen des Skripts, das über die Befehlszeile aufgerufen wird. Bitte beachten Sie, dass der Code direkt über die Befehlszeile mit der Option aufgerufen wird -R, der Wert von $argv ist einfach ein Bindestrich ( - ). Das Gleiche gilt für Code, von dem weitergeleitet wird STDIN.

Die zweite registrierte globale Variable ist $argc, die die Anzahl der Elemente im $argv-Array enthält ((und Nicht Anzahl der an das Skript übergebenen Argumente).

Wenn die von Ihnen übergebenen Argumente nicht mit dem Zeichen beginnen - , dann sollte es keine besonderen Probleme geben. Durch Übergabe eines Arguments an das Skript, das mit beginnt - wird Probleme verursachen, weil PHP entscheiden wird, dass es sich selbst darum kümmern soll. Um dieses Verhalten zu verhindern, verwenden Sie ein Argumentlistentrennzeichen -- . Sobald dieses Trennzeichen von PHP gelesen wurde, werden alle nachfolgenden Argumente unverändert an Ihr Skript übergeben.

# Dieser Befehl wird nicht ausgeführt diesen Code, zeigt aber Informationen zur PHP-Nutzung an $ php -r "var_dump($argv);" -h Verwendung: php [-f] [...] # Dieser Befehl übergibt das Argument „-h“ an Ihr Skript und verhindert so, dass die PHP-Hilfe angezeigt wird $ php -r "var_dump($argv);" -- -h array(2) ( => string(1) "-" => string(2) "-h" )

Auf Unix-Systemen gibt es jedoch eine andere Möglichkeit, PHP für Konsolenskripte zu verwenden. Sie können ein Skript schreiben, dessen erste Zeile mit beginnt #!/usr/bin/php(Ersetzen Sie ggf. den richtigen Pfad zu Ihrer Binärdatei PHP-Datei CLI). Nach dieser Zeile können Sie regulären PHP-Code einfügen, der in öffnende und schließende PHP-Tags eingeschlossen ist. Sobald Sie die richtigen Startattribute für die Datei festgelegt haben (z. B. chmod +x-Test), kann Ihr Skript als normales Konsolen- oder Perl-Skript ausgeführt werden:

Beispiel Nr. 1: Ausführen eines PHP-Skripts als Konsolenskript

#!/usr/bin/php
var_dump ($argv);
?>

Unter der Annahme, dass diese Datei test heißt und sich im aktuellen Verzeichnis befindet, können wir Folgendes tun:

$ chmod +x test $ ./test -h -- foo array(4) ( => string(6) "./test" => string(2) "-h" => string(2) "--" => string(3) „foo“ )

Wie Sie sehen, müssen Sie sich in diesem Fall keine Gedanken über die Übergabe von Parametern machen, die mit beginnen - .

Mit der ausführbaren PHP-Datei können PHP-Skripte unabhängig vom Webserver ausgeführt werden. Falls Sie auf einem Unix-ähnlichen System arbeiten, müssen Sie allen Skripten eine spezielle erste Zeile hinzufügen und sie ausführbar machen, um anzugeben, welches Programm diese Skripte verarbeiten soll. Auf Windows-Plattformen können Sie einen php.exe-Handler für Dateien mit den Erweiterungen zuweisen .php oder erstellen Sie eine Batch-Datei (.bat), um Skripte mit PHP auszuführen. Die am Anfang des Skripts für Unix-Systeme hinzugefügte Zeile hat keinen Einfluss auf deren Betrieb unter Windows-Betriebssystemen, sodass Sie plattformübergreifende Skripte erstellen können. Unten finden Sie ein einfaches Beispielskript, das von ausgeführt wird Befehlszeile:

Beispiel Nr. 2 Skript zur Ausführung über die Befehlszeile (script.php)

#!/usr/bin/php

If ($argc != 2 || in_array ($argv [ 1 ], array("--help" , "-help" , "-h" , "-?" ))) (
?>

Dies ist ein PHP-Konsolenskript, das ein Argument akzeptiert.

Verwendung:

) anders (
echo $argv [ 1 ];
}
?>

Im obigen Beispiel verwenden wir eine spezielle erste Zeile, um anzugeben, dass dieses Skript mit PHP ausgeführt werden muss. Da wir mit der CLI-Version arbeiten, werden HTTP-Header nicht angezeigt. Beim Schreiben von Konsolenanwendungen in PHP stehen Ihnen zwei Variablen zur Verfügung: $argc und $argv . Das erste ist die Anzahl der übergebenen Argumente plus eins (der Name des ausgeführten Skripts). Das zweite ist ein Array übergebener Argumente, beginnend mit dem Skriptnamen mit Index Null ($argv).

Auch im obigen Beispiel überprüfen wir die Anzahl der übergebenen Argumente. Für den Fall, dass es mehr oder weniger eines davon gibt, und auch für den Fall, dass das übergebene Argument vorhanden war --helfen , -helfen , -H oder -? , zeigen wir eine Hilfemeldung an, indem wir den Namen des Skripts ersetzen, das dynamisch ausgeführt wird. Andernfalls geben wir einfach das empfangene Argument aus.

Wenn Sie das obige Beispiel auf einem Unix-System ausführen möchten, müssen Sie es ausführbar machen und es einfach von der Konsole aus ausführen script.php echothis oder script.php -h. Auf einem Windows-System können Sie hierfür eine Batch-Datei erstellen:

Beispiel #3 Batch-Datei zum Ausführen eines PHP-Skripts über die Befehlszeile (script.bat)

@echo OFF „C:\php\php.exe“ script.php %*

Angenommen, das Skript heißt script.php und der vollständige Pfad zur php.exe-CLI lautet C:\php\php.exe , dann führt die angegebene Batchdatei das Skript mit den von Ihnen übergebenen Parametern aus: script.bat echothis oder script.bat -h.

Vielleicht möchten Sie auch die Readline-Erweiterung ausprobieren, mit der Sie Ihr PHP-Konsolenskript verbessern können.

Es gibt drei verschiedene Möglichkeiten, PHP-Code in der SAPI-CLI auszuführen:

    Angeben einer bestimmten Datei, die ausgeführt werden soll.

    $ php mein_script.php $ php -f mein_script.php

    Beide Methoden (mit Angabe der Option -F oder ohne) führt die Datei my_script.php aus. Es gibt keine Einschränkungen hinsichtlich der auszuführenden Datei und PHP-Skripte müssen nicht über die Erweiterung verfügen .php.

    Kommentar:

    Wenn Sie Argumente an das Skript übergeben müssen, dann bei Verwendung der Option -F Das erste Argument sollte sein -- .

  1. Übergeben Sie PHP-Code direkt in der Befehlszeile.

    $ php -r "print_r(get_defined_constants());"

    Sie müssen bei der Verwendung dieser Methode besonders vorsichtig sein, da es bei der Verwendung von doppelten Anführungszeichen zu einer Ersetzung von Shell-Variablen kommen kann.

    Kommentar:

    Lesen Sie das Beispiel sorgfältig durch: Es gibt keine öffnenden oder schließenden Tags! Möglichkeit -R es braucht sie einfach nicht. Ihre Verwendung führt zu einem Parserfehler.

  2. Übergeben Sie den laufenden PHP-Code über die Standardeingabe ( stdin).

    Dies bietet die leistungsstarke Möglichkeit, PHP-Code zu erstellen und ihn einer Startdatei zuzuführen, wie in diesem (fiktiven) Beispiel gezeigt:

    $some_application | some_filter | php | sort -u > final_output.txt

Sie können keine dieser drei Möglichkeiten zum Ausführen von Code kombinieren.

Wie jede andere Konsolenanwendung akzeptiert eine PHP-Binärdatei Argumente, aber ein PHP-Skript kann auch Argumente empfangen. PHP begrenzt die Anzahl der an das Skript übergebenen Argumente nicht (die Konsolen-Shell legt einen bestimmten Schwellenwert für die Anzahl der Zeichen fest, die übergeben werden können; diese Begrenzung ist normalerweise ausreichend). Die übergebenen Argumente stehen im globalen Array $argv zur Verfügung. Der erste Index (Null) enthält immer den Namen des Skripts, das über die Befehlszeile aufgerufen wird. Bitte beachten Sie, dass der Code direkt über die Befehlszeile mit der Option aufgerufen wird -R, der Wert von $argv ist einfach ein Bindestrich ( - ). Das Gleiche gilt für Code, von dem weitergeleitet wird STDIN.

Die zweite registrierte globale Variable ist $argc, die die Anzahl der Elemente im $argv-Array enthält ((und Nicht Anzahl der an das Skript übergebenen Argumente).

Wenn die übergebenen Argumente nicht mit dem Zeichen beginnen - , dann sollte es keine besonderen Probleme geben. Ein an das Skript übergebenes Argument, das mit beginnt - wird Probleme verursachen, weil PHP entscheiden wird, dass es sich selbst darum kümmern soll. Um dieses Verhalten zu verhindern, verwenden Sie ein Argumentlistentrennzeichen -- . Sobald dieses Trennzeichen von PHP gelesen wird, werden alle nachfolgenden Argumente unverändert an das Skript übergeben.

# Dieser Befehl führt diesen Code nicht aus, zeigt aber Informationen zur PHP-Nutzung an $ php -r "var_dump($argv);" -h Verwendung: php [-f] [...] # Dieser Befehl übergibt das Argument „-h“ an das Skript und verhindert so, dass die PHP-Hilfe angezeigt wird $ php -r "var_dump($argv);" -- -h array(2) ( => string(1) "-" => string(2) "-h" )

Auf Unix-Systemen gibt es jedoch eine andere Möglichkeit, PHP für Konsolenskripte zu verwenden. Sie können ein Skript schreiben, dessen erste Zeile mit beginnt #!/usr/bin/php(oder ein anderer korrekter Pfad zur PHP-CLI-Binärdatei). Nach dieser Zeile können Sie regulären PHP-Code einfügen, der in öffnende und schließende PHP-Tags eingeschlossen ist. Sobald die richtigen Startattribute für die Datei festgelegt sind (z. B. chmod +x-Test), kann das Skript als normales Konsolen- oder Perl-Skript ausgeführt werden:

Beispiel Nr. 1: Ausführen eines PHP-Skripts als Konsolenskript

#!/usr/bin/php
var_dump ($argv);
?>

Vorausgesetzt, dass diese Datei test heißt und sich im aktuellen Verzeichnis befindet, können Sie Folgendes tun:

$ chmod +x test $ ./test -h -- foo array(4) ( => string(6) "./test" => string(2) "-h" => string(2) "--" => string(3) „foo“ )

Wie Sie sehen, müssen Sie sich in diesem Fall keine Gedanken über die Übergabe von Parametern machen, die mit beginnen - .

Mit der ausführbaren PHP-Datei können PHP-Skripte unabhängig vom Webserver ausgeführt werden. Wenn Sie auf einem Unix-ähnlichen System arbeiten, müssen Sie allen Skripten eine spezielle Zeile hinzufügen #! (auch „shebang“ genannt) am Anfang der Datei und machen sie ausführbar, um anzugeben, welches Programm diese Skripte verarbeiten soll. Auf Windows-Plattformen können Sie einen php.exe-Handler für Dateien mit den Erweiterungen zuweisen .php oder erstellen Sie eine Batch-Datei (.bat), um Skripte mit PHP auszuführen. Die am Anfang des Skripts für Unix-Systeme hinzugefügte Zeile hat keinen Einfluss auf deren Betrieb unter Windows-Betriebssystemen, sodass plattformübergreifende Skripte erstellt werden können. Unten finden Sie ein einfaches Beispielskript, das über die Befehlszeile ausgeführt wird:

Beispiel Nr. 2 Skript zur Ausführung über die Befehlszeile (script.php)

#!/usr/bin/php

If ($argc != 2 || in_array ($argv [ 1 ], array("--help" , "-help" , "-h" , "-?" ))) (
?>

Dies ist ein PHP-Konsolenskript, das ein Argument akzeptiert.

Verwendung:

) anders (
echo $argv [ 1 ];
}
?>

Das obige Skript enthält eine spezielle Unix-Zeile, die angibt, von wo aus es ausgeführt werden soll mit PHP. Wir arbeiten mit der CLI-Version, daher wird kein einziger HTTP-Header angezeigt.

Das obige Beispiel überprüft auch die Anzahl der übergebenen Argumente. Falls es mehr oder weniger als eins gibt, und auch für den Fall, dass das übergebene Argument war --helfen , -helfen , -H oder -? , wird mit $argv eine Hilfemeldung ausgegeben, die den Namen des ausgeführten Skripts enthält. Andernfalls wird das empfangene Argument einfach ausgegeben.

Um das obige Beispiel auf einem Unix-System auszuführen, müssen Sie es ausführbar machen und es einfach in der Konsole ausführen script.php echothis oder script.php -h. Auf einem Windows-System können Sie eine Batchdatei erstellen:

Beispiel #3 Batch-Datei zum Ausführen eines PHP-Skripts über die Befehlszeile (script.bat)

@echo OFF „C:\php\php.exe“ script.php %*

Angenommen, das Skript heißt script.php und der vollständige Pfad zur php.exe-CLI lautet C:\php\php.exe , dann führt die angegebene Batchdatei das Skript mit den übergebenen Parametern aus: script.bat echothis oder script.bat -h.

Sie können sich auch die Readline-Erweiterung ansehen, mit der Sie Ihr PHP-Konsolenskript verbessern können.

IN Windows-Start PHP kann konfiguriert werden, ohne C:\php\php.exe und Erweiterung angeben zu müssen .php. Dieses Thema wird im Abschnitt ausführlicher beschrieben

Dieser Artikel bietet Schritt für Schritt Anleitung zur Installation von PHP für Zusammenarbeit mit Apache HTTP-Server unter Windows. Dieses Verfahren wurde sowohl unter Windows XP als auch unter Vista getestet. Es wird davon ausgegangen, dass Sie die Apache-Installation bereits abgeschlossen haben.

PHP 5-Setup-Schritte

1. Laden Sie PHP 5 herunter

Bevor Sie beginnen, laden Sie eine Kopie von PHP 5 herunter von Seiten herunterladen. Laden Sie das sichere VC6-Paket aus dem Abschnitt „Windows-Binärdateien“ herunter. Laden Sie also nicht das Installationsprogramm herunter. Wählen Sie beispielsweise das Paket mit der Markierung „ PHP 5.2.5 Zip-Paket„Wenn die aktuelle Version 5.2.5 ist.

Hinweis: Bitte beachten Sie, dass ich das folgende Verfahren nicht mit PHP 5.3-Versionen getestet habe, sondern nur mit 5.2.5 letzte Version zum Zeitpunkt des Schreibens. Theoretisch sollten die gleichen Schritte zur Installation von PHP 7 befolgt werden.

2. Installieren Sie PHP 5

Erstellen Sie auf Ihrer Festplatte einen Ordner für PHP. Ich schlage c:php vor, obwohl Sie auch einen anderen Ordnernamen und Speicherort verwenden könnten. Ich persönlich bevorzuge es, keine Namen mit Leerzeichen zu verwenden.

Extrahieren Sie alle Dateien aus dem heruntergeladenen Archiv in diesen Ordner. Klicken Sie dazu einfach doppelt auf die ZIP-Datei. Und ziehen Sie dann alle Dateien in den Ordner c:php.

3. Für diejenigen, die das Paket aktualisieren: Entfernen Sie die alte PHP.INI-Datei aus dem Windows-Verzeichnis

Wenn Sie von oben auf PHP 5 aktualisieren alte Version, gehen Sie in das Windows-Verzeichnis, ( Normalerweise ist dies c:windows) und löschen Sie alle php.ini-Dateien, die Sie zuvor dort abgelegt haben.

4. PHP-Setup

Gehen Sie zum Ordner c:php und erstellen Sie eine Kopie der von php.ini empfohlenen Datei. Name neue Datei php.ini . Sie sollten jetzt eine c:phpphp.in-Datei haben, deren Inhalt mit der von c:phpphp.ini empfohlenen Datei identisch ist.

Notiz: Wenn Sie Apache 1 verwenden, müssen Sie entweder die Datei php.ini in das Windows-Verzeichnis verschieben ( c:windows), oder legen Sie Ihre PATH-Umgebungsvariable so fest, dass sie c:php enthält. Wenn Sie nicht wissen, wie das geht, verschieben Sie einfach die Datei php.ini in den Ordner c:windows. Wenn Sie Apache 2 verwenden, müssen Sie dies nicht tun, da wir es später in der Datei angeben Apache-Konfigurationen 2-Direktive mit dem Speicherort der php.ini-Datei.

So installieren Sie PHP unter Windows 7 mit Texteditor (Zum Beispiel Notepad, das im Abschnitt „System“ des Startmenüs zu finden ist)? Öffnen Sie die Datei php.ini. Möglicherweise müssen Sie die folgenden Änderungen an der Datei vornehmen:

a) Einschließlich kurzer Eröffnungs-Tags

Suchen Sie die folgende Zeile:

short_open_tag = Aus

Wenn short_open_tag auf off gesetzt ist, werden Tags wie „

Da viele PHP-Skripte von Drittanbietern das „

short_open_tag = Ein

b) Magische Zitate

Wenn Apache PHP standardmäßig installiert ist, werden eingehende Daten nicht automatisch mit Slash-Escapezeichen versehen. Wenn Sie möchten, dass der Eingabe ein Backslash („“) vorangestellt wird, um beispielsweise Hosting-Einstellungen zu reproduzieren, suchen Sie nach der folgenden Zeile:

magic_quotes_gpc = Aus

und ersetzen Sie es durch:

magic_quotes_gpc = Ein

Dies wird nicht empfohlen, wenn dieser Parameter auf dem Hosting nicht festgelegt ist. Auch wenn es auf „Aus“ eingestellt ist, können Sie es weiterhin verwenden PHP-Funktion addslashes() um Schrägstriche für bestimmte Datenelemente hinzuzufügen.

c) Verwendung globaler Variablen

Eine Reihe älterer Skripte gehen bei der Ausführung davon aus, dass alle über ein Formular übermittelten Daten automatisch eine PHP-Variable mit demselben Namen haben. Wenn ein Formular beispielsweise ein Eingabefeld mit dem Namen „something“ hat, gehen ältere PHP-Skripte davon aus, dass der PHP-Prozessor automatisch eine Variable namens „$something“ erstellt, die den über dieses Feld angegebenen Wert enthält.

Wenn Sie solche Skripte verwenden, müssen Sie die folgende Zeile finden:

register_globals = Aus

und ändern Sie es in:

register_globals = Ein

Warnung: Tun Sie dies bei der Installation von PHP unter Windows nicht, es sei denn, Sie verfügen über Skripts von Drittanbietern, die dies zum Funktionieren erfordern. Wenn Sie neue Skripte schreiben, gehen Sie am besten immer davon aus, dass das Element register_globals auf „ gesetzt ist. Aus«.

d) Fehleranzeige

Auf einer Live-Site werden Fehler im Skript normalerweise protokolliert, ohne in der PHP-Fehlerdatei zu erscheinen. Auf einem lokalen Computer ist es jedoch praktischer, beim Testen und Debuggen eines PHP-Skripts Fehlermeldungen direkt an das Browserfenster zu senden, wenn sie erkannt werden. Auf diese Weise verpassen Sie keine Fehler, selbst wenn Sie vergessen, die Fehlerprotokolldatei zu überprüfen.

Damit PHP Fehlermeldungen direkt im Browserfenster anzeigt, suchen Sie nach der folgenden Zeile:

display_errors = Aus

und ändern Sie es in:

display_errors = Ein

Diese Einstellung sollte auf einer laufenden Site immer auf Aus gesetzt sein.

e) Sitzungspfad

Wenn das Skript Sitzungen verwendet, suchen Sie die folgende Zeile:

;session.save_path = "/tmp"

session.save_path gibt den Ordner an, in dem PHP Sitzungsdateien speichert. Da der Ordner /tmp in Windows nicht existiert, müssen Sie einen anderen Ordner installieren. Eine Möglichkeit besteht darin, einen Ordner namens c:tmp zu erstellen ( Wie zuvor haben wir c:php erstellt) und geben Sie diesen Ordner für diesen Parameter an. Wenn Sie dies tun, ändern Sie diese Zeile wie folgt:

session.save_path = "c:tmp"

Beachten Sie, dass ich nicht nur den Pfad geändert habe, sondern auch das Semikolon-Präfix („;“) aus der Zeichenfolge entfernt habe.

Sie können auch den aktuellen TEMP-Ordner auf Ihrem Computer verwenden. Oder erstellen Sie einen tmp-Ordner in Ihrem PHP-Verzeichnis, z. B. c:phptmp, und konfigurieren Sie die Konfigurationsdatei entsprechend. Es kann viele mögliche Optionen geben. Wenn Sie sich nicht entscheiden können, welches Sie wählen sollen, erstellen Sie einfach c:php und gehen Sie wie oben beschrieben vor.

f) SMTP-Server

Wenn Sie PHP 55 installiert haben, Ihr Skript die Funktion mail() verwendet und Sie möchten, dass die Funktion erfolgreich E-Mails auf Ihrem lokalen Computer sendet, suchen Sie nach dem folgenden Abschnitt:

; Nur für Win32. SMTP = localhost smtp_port = 25 ; Nur für Win32. ;sendmail_from= [email protected]

Ändern Sie es so, dass es Ihre SMTP-Serveradresse und Ihr E-Mail-Konto enthält. Zum Beispiel, wenn Ihr SMTP-Server mail.example.com, und die E-Mail-Adresse [email protected], ändern Sie den Code wie folgt:

SMTP = mail.example.com smtp_port = 25 sendmail_from = [email protected]

Bitte beachten Sie, dass das Skript danach, wenn es versucht, die Funktion mail() zu verwenden, eine Verbindung zu Ihrem ISP herstellen muss, damit es erfolgreich funktioniert. Wenn Sie die obigen Zeilen nicht ändern und versuchen, die Funktion mail() in einem Skript zu verwenden, gibt die Funktion einen Fehlercode zurück und zeigt eine Fehlermeldung an.

So konfigurieren Sie Apache für PHP 5

Es gibt zwei Möglichkeiten, Apache PHP zu installieren. Erstens: Stellen Sie es auf „Herunterladen“ ein PHP-Interpreter als Apache-Modul. Zweitens: Konfigurieren Sie es so, dass der Interpreter als CGI-Binärdatei ausgeführt wird. Es muss nur einer davon verwendet werden. Wählen Sie die Modulmethode, wenn PHP auch auf dem Hosting installiert ist, wie das Apache-Modul, oder verwenden Sie die CGI-Methode, wenn sie auf dem Hosting implementiert ist.

a) PHP 5 als Apache-Modul ausführen

Um Apache so zu konfigurieren, dass PHP als Modul zum Parsen von PHP-Skripten geladen wird, öffnen Sie mit einem ASCII-Texteditor die Apache-Konfigurationsdatei httpd.conf.

Wenn Sie Apache 1.x verwenden, befindet sich die Datei im Ordner c:ProgrammeApache GroupApacheconf. Benutzer von Apache 2.0.x finden es im Ordner C:ProgrammeApache GroupApache2conf, und Apache 2.2.x-Benutzer befinden sich im Ordner C:ProgrammeApache Software FoundationApache2.2conf. Normalerweise befindet es sich im Ordner „conf“ des Verzeichnisses, in dem Apache installiert ist.

Suchen Sie den Abschnitt der Datei mit LoadModule-Anweisungen. Deklarationen, denen das Hash-Symbol „#“ vorangestellt ist, gelten als auskommentiert.

Wenn Sie Apache 1.x verwenden, fügen Sie nach allen LoadModule-Anweisungen die folgende Zeile hinzu:

LoadModule php5_module „c:/php/php5apache.dll“

Wenn Sie Apache 2.0.x verwenden, fügen Sie nach allen LoadModule-Anweisungen die folgende Zeile hinzu:

LoadModule php5_module „c:/php/php5apache2.dll“

Wenn Sie Apache 2.2.x verwenden, fügen Sie die folgende Zeile hinzu:

LoadModule php5_module „c:/php/php5apache2_2.dll“

Beachten Sie, dass diese PHP-Beispielinstallation den Schrägstrich („/“) anstelle des herkömmlichen Windows-Backslashs („“) verwendet. Das ist kein Tippfehler.

Wenn Sie Apache 1.x verwenden, suchen Sie die Anweisungsreihe „AddModule“ und fügen Sie nach allen Zeilen Folgendes hinzu.

AddModule mod_php5.c

Suchen Sie dann den AddType-Block in der Datei und fügen Sie die folgende Zeile nach der letzten AddType-Anweisung hinzu. Dies muss unabhängig davon erfolgen, welche Version von Apache Sie verwenden. Für Apache 2.2.x müssen Sie die AddType-Zeilen im Abschnitt finden . Fügen Sie kurz vor dem Schließen eine Zeile hinzufür diesen Abschnitt.

Wenn Sie Unterstützung für andere Dateitypen benötigen, z. B. „.phtml“, fügen Sie diese der Liste hinzu, beispielsweise so:

Wenn Sie eine der Versionen von Apache 2 verwenden, müssen Sie den Speicherort der PHP-INI-Datei angeben. Fügen Sie die folgende Zeile am Ende von httpd.conf hinzu.

PHPIniDir „c:/php“

Wenn Sie ein anderes Verzeichnis verwendet haben, müssen Sie c:/php in den richtigen Pfad ändern. Vergessen Sie nicht, einen Schrägstrich („/“) zu verwenden.

Wenn Sie Apache 1 verwenden, haben Sie die Datei php.ini bereits in Ihrem Windows-Ordner oder irgendwo in Ihrem PATH abgelegt. PHP muss es also selbst finden.

PHP 5 als CGI-Binärdatei ausführen

Wenn Sie PHP 5 so konfiguriert haben, dass es als Apache-Modul geladen wird, können Sie diesen Abschnitt überspringen. Es ist für diejenigen gedacht, die PHP so konfigurieren möchten, dass es als CGI-Binärdatei ausgeführt wird.

Die Vorgehensweise bei der Installation von PHP 7 ist für Apache 1.x und alle Versionen der 2.x-Serie gleich.

Suchen Sie den Teil der Apache-Konfigurationsdatei, der den Abschnitt „ScriptAlias“ enthält. Fügen Sie die folgende Zeile direkt nach der ScriptAlias-Zeile für „ ein. cgi-bin" Wenn Sie Apache 2.2.x verwenden, stellen Sie vor dem Schließen sicher, dass die Zeile vorhanden istfür Abschnitt .

beachten Sie: Wenn Sie PHP an einem anderen Ort installiert haben, zum Beispiel c:Program Filesphp , müssen Sie stattdessen den entsprechenden Pfad angeben c:/php/ (zum Beispiel c:Programmephp). Vergessen Sie nicht, dass wir hier den Schrägstrich („/“) anstelle des Windows-Backslashs („“) verwenden.

ScriptAlias ​​/php/ "c:/php/"

Apache muss den PHP-MIME-Typ konfigurieren. Suchen Sie den AddType-Kommentarblock, der seine Verwendung erläutert, und fügen Sie die folgende Zeile darunter ein. Für Apache 2.2.x finden Sie die AddType-Zeilen unten . Fügen Sie kurz vor dem Schließen die folgende Zeile hinzu für diesen Abschnitt.

AddType application/x-httpd-php .php

Wie bei der Installation von PHP als Apache-Modul können Sie beliebige Erweiterungen hinzufügen, damit Apache sie als PHP-Skripte erkennt, zum Beispiel:

AddType application/x-httpd-php .phtml

Dann müssen Sie den Server anweisen, die ausführbare PHP-Datei jedes Mal auszuführen, wenn er auf ein PHP-Skript trifft. Fügen Sie der Datei den folgenden Code hinzu, beispielsweise nach einem Kommentarblock mit der Erklärung „ Aktion«.

Wenn Sie Apache 2.2.x verwenden, fügen Sie den Code unmittelbar nach der oben beschriebenen AddType-Anweisung hinzu; Apache 2.2.x hat keinen Kommentarblock " Aktion«.

Aktion application/x-httpd-php „/php/php-cgi.exe“

Hinweis: Der Teil „/php/“ wird als ScriptAlias ​​erkannt, eine Art Makro, das von Apache zu „c:/php/“ erweitert wird ( oder „c:/Program Files/php/“, wenn Sie dort PHP installiert haben). Mit anderen Worten, geben Sie nicht den Pfad „c:/php/php.exe“ ein „c:/Program Files/php/php.exe“, aber verwenden Sie „/php/php-cgi.exe“.

Wenn Sie Apache 2.2.x verwenden, finden Sie den folgenden Abschnitt in Ihrer httpd.conf-Datei:

Fügen Sie die folgenden Zeilen direkt nach dem Abschnitt hinzu, den Sie gerade gefunden haben.

AllowOverride None Optionen None Order erlauben, verweigern Erlauben von allen

c) Festlegen der Standardindexseite

Dieser Abschnitt bezieht sich auf die Option, PHP unter Windows sowohl als Apache-Modul als auch als CGI-Binärdatei zu installieren.

Wenn Sie eine index.php-Datei erstellen und möchten, dass Apache sie als Homepage der Site lädt, müssen Sie der Datei httpd.conf eine weitere Zeile hinzufügen. Suchen Sie die Zeile, die mit „ beginnt. VerzeichnisIndex", und fügen Sie hinzu: index.php" zur Liste der Dateien. Wenn Sie beispielsweise Code wie diesen hätten:

DirectoryIndex index.html

ändere es in:

DirectoryIndex index.php index.html

Wenn Sie sich das nächste Mal beim Webserver anmelden, verwenden Sie einen Verzeichnisnamen wie „ localhost" oder " localhost/verzeichnis/", sendet Apache alle Skripte von index.php oder den Inhalt der Datei index.html, wenn index.php nicht verfügbar ist.

Starten Sie den Apache-Webserver neu

Starten Sie den Apache-Server neu. Dies ist erforderlich, damit Apache die neuen PHP-Konfigurationsanweisungen lesen kann, die Sie in die Datei httpd.conf eingefügt haben. Der Apache 2.2-Server kann neu gestartet werden, indem Sie auf das Apache Service Monitor-Symbol in der Taskleiste doppelklicken und im angezeigten Fenster auf die Schaltfläche „Neustart“ klicken.

Testen der PHP-Installation

Erstellen Sie nach der Installation von PHP 5 5 oder einer anderen Version der Sprache eine PHP-Datei mit der folgenden Zeile:

Speichern Sie eine Datei mit dem Namen test.php im Apache htdocs-Verzeichnis. Wenn Sie Notepad verwenden, speichern Sie unbedingt den Namen „ test.php" mit Anführungszeichen. Andernfalls fügt das Programm automatisch die Erweiterung .txt hinzu.

Öffnen Sie diese Datei in Ihrem Browser, indem Sie „localhost/test.php“ (ohne Anführungszeichen) in die Adressleiste eingeben. Öffnen Sie die Datei nicht direkt über den Explorer – Sie sehen nur den Code, den Sie zuvor eingegeben haben. Sie müssen die obige URL verwenden, damit der Browser versucht, auf den Apache-Webserver zuzugreifen, der PHP zur Interpretation des Skripts ausführt.

Wenn alles gut geht, wird eine Seite mit Informationen zum Einrichten von PHP angezeigt. Herzlichen Glückwunsch – Sie haben PHP erfolgreich installiert und Apache für die Arbeit damit konfiguriert. Sie können dieselbe test.php-Datei auf Ihr Hosting hochladen und dort ausführen, um herauszufinden, wie das Hosting PHP konfiguriert hat, und versuchen, diese Einstellungen auf Ihrem Computer zu reproduzieren.

Wenn dies nicht funktioniert, prüfen Sie, ob die PHP-Installation oder die Apache-Installation Fehler auslöst. Öffnen Sie dazu ein Eingabeaufforderungsfenster und führen Sie php-cgi.exe für die Datei test.php aus, zum Beispiel c:phpphp-cgi test.php .

Wenn Sie PHP über die Befehlszeile aufgerufen haben und eine große HTML-Datei mit allen PHP-Konfigurationsinformationen gesehen haben, ist PHP korrekt konfiguriert. Das Problem hängt wahrscheinlich mit der Apache-Konfiguration zusammen. Stellen Sie sicher, dass Sie Apache neu starten, nachdem Sie Konfigurationsänderungen vorgenommen haben und dass Sie den Webserver korrekt konfiguriert haben.

Ich mache sofort einen Vorbehalt, dass alles, was in diesem Artikel besprochen wird, nur für Unix-ähnliche Betriebssysteme gilt und unter Windows nicht funktioniert. Genau darüber reden wir Alternative zu Krone. Unglückliche Windows-Liebhaber müssen damit zaubern „Aufgabenplaner“- Black Magic bleibt für sie unzugänglich :) Darüber hinaus benötigen Sie SSH-Zugriff und idealerweise PHP-Skriptzugriff auf die Befehlszeile.

Was ist ein Daemon-Programm und wie schreibt man einen Daemon in PHP?

Dämon(Daemon, Dæmon, altgriechisch δαίμων Gottheit) ist ein Computerprogramm auf Systemen der UNIX-Klasse, das vom System selbst gestartet wird und im Hintergrund ohne direkte Benutzerinteraktion läuft. Dämonen starten normalerweise während des Systemstarts.

Es ist auf PHP anwendbar und ein Skript, das selbstständig, ohne Unterbrechung und ohne Benutzerinteraktion ausgeführt werden kann. Wie bekomme ich ein solches Skript? Tatsächlich ist es ganz einfach: Sie müssen nur eine der ersten Programmierregeln brechen, die in der Schule gelehrt werden, und Erstelle eine Endlosschleife:

// Damit das Programm ständig funktioniert, muss es einfach ständig funktionieren;) while(1) ( // Der Daemon-Code befindet sich hier // ... // Die Daemon-Ruhezeit zwischen den Iterationen (hängt von den Anforderungen des ab). system) sleep(1); )

Der unglaublich einfache Code wirft immer noch einige Fragen auf. Wie starte ich es? Wie kann man die Umsetzung verfolgen? Wie kann man ihn aufhalten?

So starten Sie einen PHP-Daemon

Wie führt man PHP-Skripte im Allgemeinen aus? Wenn es sich um eine Webanwendung handelt, verwenden Sie einen Browser und einen Webserver. Diese Option ist jedoch nicht geeignet, da es sich um ein endloses Skript handelt und die Ausführungszeit von Skripten durch die Direktive begrenzt ist max_execution_time V php.ini. Daher muss ein Endlosskript über die Konsole ausgeführt werden, da dann die maximale Ausführungszeit nicht berücksichtigt wird. Der Befehl zum Starten des Daemons sieht etwa so aus:

PHP -f /path/to/your/daemon.php &

Um es manuell zu starten, müssen Sie es im SSH-Terminal (Putty, WinSCP usw.) eingeben und zum Starten durch das System beim Booten in die entsprechende Startdatei (Position und Name der Datei hängen vom Betriebssystem ab). System). Bitte beachten Sie, dass Konsole Daemon-Skript läuft im Hintergrund, ohne dass der Benutzer auf seine Fertigstellung warten muss (schließlich ist das Skript endlos). Die Möglichkeit, einen Prozess im Hintergrund laufen zu lassen, ist der Grund dafür, dass die von mir beschriebene Methode nicht für Windows-Server geeignet ist. Nach dem Start sollte die Konsole angezeigt werden Prozess ID unser Daemon, die sogenannte PID.

Dämonen aufspüren und stoppen

Sie können überprüfen, ob der Daemon-Prozess ausgeführt wird, indem Sie einfach die Liste der Prozesse im System öffnen:

PS-aux

Einen Daemon in der Liste der Prozesse zu finden ist einfach, sowohl über den Startbefehl als auch über die PID:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ... root 22193 0,1 0,2 393180 72132 ? S 24. April 5:05 php -f /path/to/your/daemon.php &

Stoppen Sie den Daemon-Prozess Sie können es auf die gleiche Weise wie jeden anderen Prozess tun:

Töte xxxx

Im gegebenen Beispiel ist xxxx die PID, die Prozesskennung.

Es ist erwähnenswert, dass dadurch der Daemon-Prozess nicht gestoppt, sondern vielmehr „abgebrochen“ wird. Tatsache ist, dass das Skript überall unterbrochen wird, was nicht immer für jeden geeignet ist. Theoretisch sollte in diesem Fall der Daemon irgendwo zwischen seinen Iterationen und nicht mehr über die Konsole gestoppt werden. Beispielsweise können wir eine Anfrage zum Stoppen des Skripts in der Datenbank oder in einer Datei auf dem Server erstellen und zwischen den Iterationen des Daemons prüfen, ob eine solche Anfrage existiert. Wenn die Anwendung gefunden wird, Stoppen Sie die Schleife mit der break-Anweisung.

Dämonenkontrollsystem

Was ist, wenn Sie viele Daemons gleichzeitig erstellen und verfolgen müssen? Beispielsweise sind im oben genannten CheckTrust-Dienst > 30 solcher Skripte an der Verarbeitung von Benutzerdaten und Projekten beteiligt. Ihre Erstellung und Überwachung über die Konsole ist sehr umständlich – eine benutzerfreundlichere Oberfläche ist erforderlich.

Cool, ja? :) Um ein solches System zu erstellen, wäre es schön, über PHP Zugriff auf die Befehlszeile zu haben. Jeder Daemon ist ein Eintrag in der Datenbank, für den Sie einen Befehl zum Starten sowie die PID des Prozesses eingeben können. Dadurch ist es möglich, Daemons direkt über die Weboberfläche zu starten, zu stoppen und den Status zu überwachen. Dadurch wurden die Daemons selbst Teil einer Konsolenanwendung und das System zu ihrer Verwaltung wurde Teil einer Webanwendung.

Da das oben gezeigte System ausschließlich für CheckTrust konzipiert ist, werde ich seinen Code nicht zeigen. Aber ich werde den Code hier kopieren PHP-Klasse zur Verwaltung von Prozessen, das ich beim Erstellen verwendet habe:

<?php /* * Process.php * Eine einfache Möglichkeit, den Überblick über externe Prozesse zu behalten. * Wollten Sie schon immer einen Prozess in PHP ausführen, wollten aber dennoch eine gewisse Kontrolle über den Prozess haben? Nun ja... Das ist eine Möglichkeit, es zu tun. * @compability: Nur Linux. (Windows funktioniert nicht). * @author: Peec */ class Process( private $pid; private $command; public function __construct($cl=false)( if ($cl != false)( $this->command = $cl; $this-> runCom(); ) ) private function runCom())( $command = "nohup ".$this->command." > /dev/null 2>&1 & echo $!"; exec($command ,$op); $ this->pid = (int)$op; ) öffentliche Funktion setPid($pid)( $this->pid = $pid; ) öffentliche Funktion getPid())( return $this->pid; ) öffentlicher Funktionsstatus( ))( $command = "ps -p ".$this->pid; exec($command,$op); if (!isset($op))return false; else return true; ) public function start()) ( if ($ this->command != "")$this->runCom(); else return true; ) public function stop())( $command = "kill ".$this->pid; exec($command ); if ($ this->status() == false)true zurückgeben; andernfalls false zurückgeben; ) ) ?>

Der einzige Nachteil dieser Klasse ist, dass ich Ihre bereits beschrieben habe – sie stoppt Prozesse mit der Kill-Methode, aber das reicht mir vorerst :) Und hier ist sie ein Anwendungsbeispiel:

// Starten Sie den Daemon und rufen Sie die PID ab (vorausgesetzt, die PID wird nach dem Start irgendwo gespeichert) $command = ""; $process = neuer Prozess($command); $processId = $process->getPid(); // Überprüfen des Daemon-Status $process = new Process(); $process->setPid($processId); $status = $process->status(); // gibt true oder false zurück // Den Daemon stoppen $process = new Process(); $process->setPid($processId); $stopped = $process->stop(); // gibt true oder false zurück

Zusammenfassend möchte ich sagen, dass dies nicht die einzig mögliche und möglicherweise auch nicht die optimalste Implementierung von Daemons in PHP ist. Es gibt zum Beispiel eine coole PHP-Erweiterung PCNTL für Multiprozess-Daemons. Manche würden vielleicht sogar sagen, dass es für Konsolenanwendungen völlig unterschiedliche Programmiersprachen gibt. Aber was auch immer man sagen mag, diese Umsetzung ist unbestreitbar Vorteile:

  • Sie ist einfach wie ein Pantoffel. Ein Dämon ist nur eine Endlosschleife, viel einfacher.
  • Es ist mit Webanwendungen kompatibel- Da meine Daemons Teil eines Webdienstes sind, stützen sie sich auf bestehende Entwicklungen und verwenden dieselben Datenmodelle, Klassen und Methoden, um mit ihnen zu arbeiten.
  • Sie arbeitet! Im Ernst – wir haben einige Daemons schon seit mehreren Monaten am Laufen, und da sie gut geschrieben sind, werden sie nicht dumm, frieren nicht ein und verbrauchen keinen Speicher.

Vielen Dank für Ihre Aufmerksamkeit :) Wenn jemand Fragen oder Ideen hat, beantworte ich diese gerne in den Kommentaren.

gastroguru 2017