Wie kann ich verhindern, dass "#! / usr / bin / php" in PHP angezeigt wird?

7

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 ...

    
brainsqueezer 05.11.2010, 11:03
quelle

5 Antworten

17

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.

    
Viliam Simko 21.07.2011 07:47
quelle
5

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 .

    
David Kuridža 05.11.2010 11:08
quelle
3

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.

    
Chris 05.11.2010 11:23
quelle
1

Rufen Sie das Skript mit dem Befehl php

auf     
Petah 05.11.2010 11:06
quelle
-1

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!

    
delboy1978uk 12.04.2017 10:21
quelle