PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suse8.2 apache2, ? phpinfo(); ? funktioniert aber einfache echo-Befehle nicht



Mr.Nobody
20-10-2003, 20:18
Hallo,

habe Suse8.2, apache2 und php PHP Version 4.3.2.
Wenn ich folgende Seite mit gestartetem apache 2 Server aufrufe, dann erscheint
die php Infoseite, wie sie erscheinen muß.

hauptrechner:/opt/apache2/htdocs # cat test.php
<html>
<head>
<title>Status PHP 4</title>
</head>
<body>
<? phpinfo(); ?>
</body>
</html>
hauptrechner:/opt/apache2/htdocs #

Wenn ich aber folgende Seite aufrufe

hauptrechner:/opt/apache2/htdocs/php_test # cat index.html
<html>
<head>
<title>Titel</title>
</head>

<body>
<?
echo 123 + 234;
echo "<br>";
echo "Textausgabe <br>";
echo date("Y");

?>
</body>
</html>


dann erhalte ich folgende Ausgabe im Browser:

"; echo "Textausgabe
"; echo date("Y"); ?>

und sonst gar nichts.

Was habe ich falsch gemacht? Ich hab das Beispiel aus meinem PHP-Buch abgeschrieben.
Läuft bei mir php nicht richtig, obwohl die phpinfo-Seite funktioniert?

mfG
N.

sagi
20-10-2003, 20:37
habe Suse8.2, apache2 und php PHP Version 4.3.2.

wenn du nicht mod_php hast, dann solltest du "#!/usr/bin/env php" in die 1. Zeile schreiben

evtl noch statt <? ... ?> <?php ... ?> verwenden.

wie schaut von der Seite eigentlich der Quelltext aus (im Browser)

mfg

c.

offe
20-10-2003, 21:26
Hallo,

nenn die index.html einfach index.php. In html-Seiten wird normalerweise kein PHP-Code ausgeführt (außer man schreibt dies extra in die httpd.conf).

Offe

sagi
20-10-2003, 22:32
Original geschrieben von offe
Hallo,

nenn die index.html einfach index.php. In html-Seiten wird normalerweise kein PHP-Code ausgeführt (außer man schreibt dies extra in die httpd.conf).

Offe

1) so wie ich das verstanden habe soll der Code ausgefuehrt werden

2) .php files werden auch nur ausgefuerhrt, wenn es "extra" in der http.conf steht ;)

mfg

c.

Mr.Nobody
21-10-2003, 22:02
Hallo,

danke für Eure Antworten, ich habe die Datei in index.php umgeändert.
Jetzt funktioniert es.

Nur eine Frage zu dem Eintrag in der httpd.conf.
Ist auf den apache-Servern im Internet auf denen php läuft diese Option in der httpd.conf immer aktiviert, daß in normalen html-Seiten auch php-Code ausgeführt wird?

Und wenn es auf dem Server nicht aktiviert ist, heißen dann diese Dateien statt index.html immer index.php?

Oder gibt es auch eine Möglichkeit dies im <head></head> Teil einer html-Seite
festzulegen?

mfG
N.

Gaert
21-10-2003, 22:30
Hallo!

Bei den meisten Providern sind sowohl .php als auch .php3 entweder mod_php oder PHP als CGI zugeordnet. .html oder .htm PHP zuzuordnen wäre selbstverständlich möglich, genauso wie z.B. .phps (gibt es auch bei manchen Providern). Dies würde allerdings zu Performance Einbußen führen, da jede angefragte statische HTML Seite erst noch vom PHP Prozessor geparsed werden würde, obwohl klar ist, dass es sich um eine Seite ohne PHP Inhalt handelt.
In der Seite selbst können keine Einstellungen verändert werden, da der Webserver die Seiten liefert, ohne deren Inhalt zu prüfen - eine Zuordnung zu Skriptinterpretern ist nur über die Dateieendung möglich.

Gruß,

Gaert

sagi
21-10-2003, 22:45
oder PHP als CGI zugeordnet.

das ist IMHO nicht ueblich. wenn schon CGi, dann werden die Daten einfach ausgefuerht. in diesen fall muss das File mit einem #! beginnen... oder?

Gaert
22-10-2003, 08:07
Original geschrieben von sagi
das ist IMHO nicht ueblich. wenn schon CGi, dann werden die Daten einfach ausgefuerht. in diesen fall muss das File mit einem #! beginnen... oder?

Du kannst PHP auch folgendermaßen als CGI einbinden (hab jetzt nur die Windows install.txt da, weil ich grad @ work bin)

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

Auf diese Weise ist es möglich mehrere PHP Versionen gleichzeitig laufen zu lassen, denn mod_php kann nur einmal eingebunden werden.

Alternativ kann man es natürlich auch mit suEXEC einbinden, dann muss die Shebang vor jedem Script stehen.

sagi
22-10-2003, 11:49
ah. cool. wusste ich gar nicht. thx

mfg

c.