Forum: PC Hard- und Software Fehlermeldungen von PHP5?


von Uhu U. (uhu)


Lesenswert?

Wie kommt man denn unter Linux an Compile-Fehlermeldungen von PHP5 
heran?

: Gesperrt durch User
von Peter II (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Wie kommt man denn unter Linux an Compile-Fehlermeldungen von PHP5
> heran?

error.log vom Apache? Oder wenn in der php.ini ein extra log angegeben 
ist.

von Uhu U. (uhu)


Lesenswert?

Danke.

von Ungläubiger (Gast)


Lesenswert?

"Compile-Fehlermeldungen"

Ist php nicht lediglich ein Interpreter?!

Wenn du aber die Fehlermeldungen haben möchtest die beim einlesen und 
ausführen des Skriptes kommen, kann man entweder in den oben genannten 
Dateien nach gucken, oder für ENTWICKLUNGszwecke die Fehlerausgabe 
aktivieren. Dann sieht man die direkt, wenn man via Browser die Seite 
versucht aufzurufen

von Uhu U. (uhu)


Lesenswert?

Ungläubiger schrieb:
> Ist php nicht lediglich ein Interpreter?!

Ja und?

Ein Interpreter ist ein Compiler, der den erzeugten Code sofort 
ausführt. Entsprechend nennt man Fehler, die in der Compilationsphase 
auftreten, eben "Compile-Fehler"...

> oder für ENTWICKLUNGszwecke die Fehlerausgabe aktivieren.

Wenn das Skript Compile-Fehler produziert, wird es niemals selbst 
Fehlerausgaben erzeugen können, weil der Interpreter sein Compilat nicht 
ausführt, sondern wegschmeißt.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Ein Interpreter ist ein Compiler, der den erzeugten Code sofort
> ausführt. Entsprechend nennt man Fehler, die in der Compilationsphase
> auftreten, eben "Compile-Fehler"...

nein ist es nicht. ein Interpreter ist kein Compiler. Bei einen 
Interpreter muss kein Maschinen code erzeugt werden.

von Stefan R. (srand)


Lesenswert?

Uhu Uhuhu schrieb:
> Ein Interpreter ist ein Compiler, der den erzeugten Code sofort
> ausführt.

Nein.

> Entsprechend nennt man Fehler, die in der Compilationsphase auftreten,
> eben "Compile-Fehler"...

Außer dir tut das niemand.

von Uhu U. (uhu)


Lesenswert?

Peter II schrieb:
> nein ist es nicht. ein Interpreter ist kein Compiler. Bei einen
> Interpreter muss kein Maschinen code erzeugt werden.

Du irrst. Natürlich erzeugt der Interpreter einen Strom von 
Maschinenbefehlen - sonst würde das Skript niemals ausgeführt werden. 
Aber das hatten wir schon öfter...

Der Compilationspaß eines Interpreters erzeugt aus dem Quell-Text eine 
Zwischensprache¹. Erst diese Zwischensprache wird in eine Folge von 
Funktionsaufrufe umgesetzt, die eine abstrakte Maschine steuern.

Die abstrakte Maschine besteht aus Funktionen, die die Befehle der 
abstrakten Maschine - dynamisch - in Maschinencode der realen Maschine 
umsetzten.

Das Ur-Beispiel: Niklaus Wirths Pscal-P-Maschine:
http://www.threedee.com/jcm/psystem/

--------------

¹ Die Zwischenebene führt man ein, weil die Interpretation des 
Quelltextes in aller Regel zu ineffizient ist. Letztlich ist es ein 
Kompromiß zwischen Compilations- und Interpretationsaufwand. Der 
Interpreter einer Shell wird weniger Compilationsaufwand betreiben, als 
der einer Skriptsprache, wie Perl, oder Python.

von Uhu U. (uhu)


Lesenswert?

Stefan Rand schrieb:
> Außer dir tut das niemand.

Und wie würdest du sowas hier nennen:
1
[Sun Jan 05 12:31:33 2014] [error] [client 127.0.0.1] PHP Parse error:
2
  syntax error, unexpected '@' in /var/www/dokuwiki/lib/plugins/variables
3
  /syntax/substitute.php on line 43, referer: http://localhost/dokuwiki
4
  /doku.php?id=start&do=draft

Stammt aus dem error.log des Apatchen...

von Peter II (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Du irrst. Natürlich erzeugt der Interpreter einen Strom von
> Maschinenbefehlen - sonst würde das Skript niemals ausgeführt werden.

nein macht er nicht.

> Aber das hatten wir schon öfter...
genau und du hast es immer noch nicht verstanden.

von Peter II (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Und wie würdest du sowas hier nennen:[Sun Jan 05 12:31:33 2014] [error]
> [client 127.0.0.1] PHP Parse error:
>   syntax error, unexpected '@' in
> /var/www/dokuwiki/lib/plugins/variables
>   /syntax/substitute.php on line 43, referer: http://localhost/dokuwiki
>   /doku.php?id=start&do=draft

steht sogar da:

PHP Parse error

da ist also überhaupt kein Compiler beteiligt.

von Uhu U. (uhu)


Lesenswert?

Peter II schrieb:
> nein macht er nicht.

Wird der Zwischencode auf blauem Dunst ausgeführt, oder auf einem realen 
Prozessor?

> PHP Parse error
>
> da ist also überhaupt kein Compiler beteiligt.

Der Parser ist nun mal eine der klassischen Komponenten eines 
Compilers...

: Bearbeitet durch User
von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Uhu Uhuhu schrieb:
> Und wie würdest du sowas hier nennen

Wie auch immer man das nennt (PHP nennt es einen Parse Error) so kann 
man sich diese Fehler per Setting in der php.ini (und per PHP Skript 
angepasst) trotzdem im Browser als simple Textseite zurückliefern 
lassen.

http://www.php.net/manual/de/errorfunc.configuration.php#ini.display-errors
http://www.php.net/manual/de/function.error-reporting.php

von Peter II (Gast)


Lesenswert?

> Wird der Zwischencode auf blauem Dunst ausgeführt, oder auf einem realen
> Prozessor?

es gibt keinen Zwischencode, sonst währe es ja ein Compiler.


http://de.wikipedia.org/wiki/Interpreter

Ein Interpreter (im Sinne der Softwaretechnik) ist ein Computerprogramm, 
das einen Programm-Quellcode im Gegensatz zu Assemblern oder Compilern 
nicht in eine auf dem System direkt ausführbare Datei übersetzt, sondern 
den Quellcode einliest, analysiert und ausführt.

von Uhu U. (uhu)


Lesenswert?

Grüß den Wald schön von mir, wenn du ihn vor lauter Bäumen irgendwann 
mal sehen solltest...

von Xyz X. (Firma: xyz) (khmweb)


Lesenswert?

PHP ist ein Interpreter oder auch eine Interpreter-Sprache. Ich zitiere 
hier mal das Wiki dazu:

"PHP ist ein System, das PHP-Code serverseitig verarbeitet. Das 
bedeutet, dass der Quelltext nicht an den Webbrowser übermittelt wird, 
sondern an einen Interpreter auf dem Webserver. Erst die Ausgabe des 
PHP-Interpreters wird an den Browser geschickt. In den meisten Fällen 
ist das ein HTML-Dokument, wobei es mit PHP aber auch möglich ist, 
andere Dateitypen, wie Bilder oder PDF-Dateien, zu generieren."

Aber, es gibt auch PHP-Compiler, wie phc:

http://www.phpcompiler.org/

Näheres s. dort oder Wiki unter "Kompilierung":

http://de.wikipedia.org/wiki/PHP

: Bearbeitet durch User
von Vn N. (wefwef_s)


Lesenswert?

Uhu Uhuhu schrieb:
> Der Compilationspaß eines Interpreters erzeugt aus dem Quell-Text eine
> Zwischensprache¹. Erst diese Zwischensprache wird in eine Folge von
> Funktionsaufrufe umgesetzt, die eine abstrakte Maschine steuern.

Du meinst Bytecode-Interpreter, PHP ist kein solcher. Python 
beispielsweise schon, es wird vor der Ausführung in eine Zwischensprache 
kompiliert, welche dann interpretiert wird.

Uhu Uhuhu schrieb:
> Der Parser ist nun mal eine der klassischen Komponenten eines
> Compilers...

Nicht alle roten Autos sind Feuerwehrautos.

Uhu Uhuhu schrieb:
> Du irrst. Natürlich erzeugt der Interpreter einen Strom von
> Maschinenbefehlen - sonst würde das Skript niemals ausgeführt werden.
> Aber das hatten wir schon öfter...
1
String input = "echo \"Hallo Welt\""
2
3
if token(input, ' ', 0) == "echo":
4
    print token(input, ' ', 1)

Gratuliere, der wohl erste Interpreter der Welt, der einen "echo"-Befehl 
interpretieren kann, ohne eine Zwischensprache zu erzeugen. Ob ich wohl 
einen Preis für diese überragende Entdeckung bekomme?

: Bearbeitet durch User
von Nase (Gast)


Lesenswert?

Mittlerweile benutzt PHP aber einen Zwischencode, der dann auf einer 
abstrakten Maschine ausgeführt wird.

von Uhu U. (uhu)


Lesenswert?

vn nn schrieb:
> Gratuliere, der wohl erste Interpreter der Welt, der einen "echo"-Befehl
> interpretieren kann, ohne eine Zwischensprache zu erzeugen. Ob ich wohl
> einen Preis für diese überragende Entdeckung bekomme?

Hast du jetzt frei assoziiert, oder gelesen, worum es ging?


Nase schrieb:
> Mittlerweile benutzt PHP aber einen Zwischencode, der dann auf einer
> abstrakten Maschine ausgeführt wird.

Anders wäre PHP auch nicht im Entfernten effizient zu bekommen und z.B. 
die Option S - speichern des Pattern-Compilates für weitere Verwendung - 
für Pearl-Patterns wäre sinnlos.

von Vn N. (wefwef_s)


Lesenswert?

Uhu Uhuhu schrieb:
> Hast du jetzt frei assoziiert, oder gelesen, worum es ging?

Wirfst du einfach nur mit Wörtern um dich oder soll die Frage auch einen 
konkreten Hintergrund haben? Oder bezieht sie sich gar tatsächlich auf 
den Satz, denn du davor zitiert hast?

Uhu Uhuhu schrieb:
> Nase schrieb:
>> Mittlerweile benutzt PHP aber einen Zwischencode, der dann auf einer
>> abstrakten Maschine ausgeführt wird.
>
> Anders wäre PHP auch nicht im Entfernten effizient zu bekommen und z.B.
> die Option S - speichern des Pattern-Compilates für weitere Verwendung -
> für Pearl-Patterns wäre sinnlos.

Gut, mein Fehler, ändert aber auch nix daran, dass der Allgemeinplatz

> Ein Interpreter ist ein Compiler, der den erzeugten Code sofort
> ausführt.

schlichtweg Unfug ist.

: Bearbeitet durch User
von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Eure privaten Grabenkriege bitte per PN fortführen, die Frage ist ja 
wohl inzwischen hinlänglich beantwortet. Sollten noch einzelne 
Randpunkte als Diskussionwürdig erachtet werden bitte neuen Thread 
eröffnen.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.