Ich möchte, dass PHP-Skripte sowohl auf der Kommandozeile als auch auf der Webseite laufen (ich benutze Apache und Nginx), also stelle ich #! / usr / bin / php in die erste Zeile meiner Skripte, aber das erscheint auf der Webseite ...
Ich habe das Problem mit der Ausgabepufferung gelöst. Mein Skript sieht jetzt so aus:
%Vor% Hinweis: Am Ende der Datei befindet sich kein ?>
. Dies ist eine gute Übung beim Schreiben von PHP-Skripten. Dadurch wird verhindert, dass überflüssiger Text versehentlich gedruckt wird.
Hinweis: Die PHP-Dokumentation für ob_end_clean()
sagt das:
Der Ausgabepuffer muss von ob_start () mit gestartet werden PHP_OUTPUT_HANDLER_CLEANABLE und PHP_OUTPUT_HANDLER_REMOVABLE Flags. Andernfalls funktioniert ob_end_clean () nicht.
Es scheint, dass dies automatisch geschieht, wenn PHP von der Befehlszeile läuft.
Sie müssen #!/usr/bin/php
in Ihrem Code nicht verwenden, führen Sie das CLI-Skript nur mit php
aus, z. B. php /path/to/file.php
oder /usr/bin/php /path/to/file.php
.
Ich finde es generell eine gute Idee, Logik von Präsentation zu trennen. Wenn ich so etwas mache, stelle ich so viel wie möglich in eine Bibliothek und schreibe dann separate CLI- und Web-Interfaces dafür.
Das heißt, es ist wahrscheinlich einfacher, sie mit dem Befehl php aufzurufen.
Die obige Ausgabe-Pufferlösung ist ein Hack. Mach das nicht.
Als erstes solltest du den env-Befehl verwenden, um zu bestimmen, welcher php verwendet wird:
%Vor%Geben Sie ihm dann die Erlaubnis, selbst ausgeführt zu werden:
%Vor%Anstatt "php myfile" aufzurufen, müssen Sie jetzt einfach Folgendes ausführen:
%Vor%Von diesem Ordner. Hoffe das hilft!
Tags und Links php nginx shell apache command-line-interface