Php Vorteile gegenüber cgi ?

Hi,
wer kann mir sagen welche Vorteile php gegenüber cgi hat bzw. umgekehrt? Müssen bei php die Scripte wie beim cgi Pfade angegeben werden,in ein eigenes Verzeichnis „cgi-bin“ oder Rechte vergeben werden?

Gruß
Claudia

Hallo Claudia,

wer kann mir sagen welche Vorteile php gegenüber cgi hat bzw.
umgekehrt? Müssen bei php die Scripte wie beim cgi Pfade
angegeben werden,in ein eigenes Verzeichnis „cgi-bin“ oder
Rechte vergeben werden?

man kann auch PHP über CGI betreiben! Wenn PHP-Skripte aber über ein Server-Modul (z.B. mod_php beim Apache) laufen (das gibt es auch für Perl), dann kann man die PHP Skripte überall ablegen und besondere Rechte brauchen die auch nicht.

Über Server-Module zu gehen ist schneller, da nicht für jeden Request ein neues Programm gestartet werden muss, aber es ist auf einem Shared-Server (wo also mehrere Sites lieben) auch unsicherer. Die meisten Module haben eingebaute Sicherheitsmechanismen, die aber nie an die Sicherheit eines UNIX-Server langen. Über Windows Server weiss ich eh nichts, ausser dass man das besser eh sein lässt :wink:

Alles Gute
Michael

Hallo!
Irgendwie habe ich garnichts verstanden… :frowning:

Gruß
Claudia

Hallo Claudia,

ok, dann hole ich etwas weiter aus…

Also, CGI ist eine Schnittstellenspeizifikation, mit der ein Webserver (z.B. der Apache httpd) die Seitenaufruf-Daten (URL, Cookies, Formular-Daten etc.) an ein Programm übergeben kann. D.h. für jeden Seitenaufruf wird ein neues Programm gestartet, z.B. ein Perl- oder PHP-Interpreter oder auch direkt ein spezielles kompliliertes Binärprogramm. Dies ist also recht träge und belastet den Server auch ziemlich. Da die Programme aber über einen „Trick“ (z.B. cgi-wrap) unter den Userrechten des Eigentümers des aufgerufenen Programms laufen, recht sicher.

Ausserdem können (vor allem) Skriptsprachen auch über Webserver-Module direkt im Webserver laufen. Beim Apache Webserver heissen die immer „mod…“, also z.B. mod_php oder mod_perl. Hierfür ist also für Seitenaufrufe kein separater Programmstart nötig, sondern der Code wird im bereits im Webserver einmalig geladenen Modul ausgeführt. Dieses ist also schnell und belastet den Server auch nur wenig. Aber da alle Programme damit unter den Userrechten des Eigentümers des Webservers (ich meine damit immer die Software) laufen, kann man u.U. Dateien in anderes Sites ändern, die im selben Webserver laufen - wobei viele mod_… Maßnahmen dagegen treffen.

Vielleicht ist unser Projekt (alte, offizielle, aber nicht mehr gepflegte Website: http://www.hostsharing.org / neue, noch inoffizielle aber dafür gepflegte Website: http://new.hostsharing.net) für dich auch interessant. Da kann man sowas auch lernen :wink:

Ansonsten müssten deine Fragen jetzt schon etwas konkreter werden.

Alles Gute
Michael

Hallo Claudia,
Hab ich mir fast gedacht…

PHP-Scripts sind in HTML-Dokumenten eingebettet. D.h. diese werden bei Anzeigen serverseitig ausgeführt.
CGI-Scripts sind eigenständige Programme (in C/C++, Perl, Tcl usw.) welche HTML-Dokumente generieren.

Der Vorteil von PHP ist, dass Du ganz normal HTML erstellen kannst und die dynamischen Ausgaben ganz einfach eingebettet werden. Dadurch ist es einfacher ein bestehendes Design zu übernehmen. Ausserdem hat PHP Schnittstellen zu vielen Datenbanken, Mail usw. Welche einfacher zu handhaben sind als in CGI-Scripts.
In CGI’s ist es zum Teil sehr mühsam eine gesamte HTML-Seite zu generieren. Vor allem wenn das Design aufwendig ist.

Gruss, Simon

Hi,
Bei cgi gibt es ssi zum einbauen der Scripte. Wie wird es bei php gemacht? Leider funktioniert das nicht bei alle cgi’s. Ist das bei php anders? Wo bekommt man kostenlose deutsch php’s?

Gruß
Claudia

Hallo Claudia,

Bei cgi gibt es ssi zum einbauen der Scripte. Wie wird es bei
php gemacht? Leider funktioniert das nicht bei alle cgi’s. Ist
das bei php anders? Wo bekommt man kostenlose deutsch php’s?

SSI sind in HTML eingebettete Kommandos. Eigentlich ist ganz PHP so gesehen eher mit SSI vergleichbar als mit CGI. Natürlich bekommen PHP Skripte auch alle Umgebungsdaten, wie CGI es auch macht.

Man kann aus PHP heraus auch andere Skripte rufen, aber dann hat man natürlich wieder einen separaten Programmaufruf. Man sollte das i.d.R. vermeiden, das macht nur die Site langsam.

Ein SSI-Prozessor selbst wiederum kann auch entweder über CGI laufen oder als Webserver-Modul. Das nur nebenbei bemerkt.

Für deutsche INfos zu PHP siehe http://www.php-homepage.de/, http://www.php-center.de/ oder http://www.phpwelt.de/.

Alles Gute
Michael

Hallo Simon,

In CGI’s ist es zum Teil sehr mühsam eine gesamte HTML-Seite
zu generieren. Vor allem wenn das Design aufwendig ist.

man kann „in CGIs“ keine Seiten generieren. CGI ist nur eine Spezifikation, wie Umgebungsdaten /zB. die aufgerufene URL, der Server-name, der Server Admin, die referenzierede URL, die Cookies, ggf. der authorisiere User und sein passwort, Formulardaten etc.) vom Webserver an Skripte übergeben werden. Alles weitere hängt dann von der Sprache ab, die über CGI angebunden wird, das kann auch PHP sein!

CGI wird leider wirklich zu gern für eine Skriptsprache gehalten, was es absolut nicht ist.

Wenn du in deinem Artikel CGI gegen Perl austauscht, hast du größtenteils recht. Meist sind CGI-Skripte tatsächlich Perl-Skripte, aber keinesfalls immer.

Alles Gute
Michael

Hallo Michael,
Mir ist die CGI-Spezifikation bestens bekannt!
Allerdings habe ich auf die Frage von Claudia geantwortet!
Und diese hat mit CGI höchstwahrscheinlich ein Programm in einer Skript-Sprache gemeint welches auf einem Webserver läuft, Daten empfängt und auch wieder Daten in Form eines HTML-Doks sendet.

Unter diesen Gesichtspunkten ist meine Antwort wohl richtig, denn ich wollte bei ihr nicht noch mehr Verwirrung stiften.

Gruss, Simon

Hi
bekomme kein Script ans laufen.

Wie komme ich an die einzustellende Pfade? Mein Hoster bietet php4 gibt allerdings nur Pfade für cgi - Sind diese identisch?
Müssen die Scripte in ein bestimmtes Verzeichnis (wie cgi-bin bei cgi Scripte?

Wieso klappt das nicht?

Gruß
Claudia

Hallo Claudia,

Wie komme ich an die einzustellende Pfade? Mein Hoster bietet
php4 gibt allerdings nur Pfade für cgi - Sind diese identisch?
Müssen die Scripte in ein bestimmtes Verzeichnis (wie cgi-bin
bei cgi Scripte?

WAs für Pfade? Du solltest eigentlich PHP überall verwenden können, wo du auch HTML-Dateien ablegen kannst. _Eigentlich_

Der Webserver kann aber auch so eingerichtet sein, dass du sie ins cgi-bin zu den CGI-Skripten legen musst. Das wäre aber untypisch.

Sicher kann dir das nur dein Webhoster oder seine Doku sagen.

Wieso klappt das nicht?

leider kann ich das auch nicht sagen. Ich kenne einen Hoster, bei dem würde es klappen. Und wenn nicht, würde dir schon jemand helfen, indem er sich das mal auf dem Server ansieht.

Viel Erfolg
Michael

Hallo Michael,
wieso lese ich dann in jeder Anleitung zu Scripten, daß es noch in der config.php angepaßt werden muß. Hier ein Beispiel:

$db_host =„localhost“;
$db_user =„root“;
$db_passwort ="";
$db_name =„adserver“;

$conn = mysql_connect($db_host, $db_user, $db_passwort);
$db = mysql_select_db($db_name, $conn);

//tabellen-namen:
$banner_db =„fa_banner“;
$user_db= „fa_user“;
$temp_db = „fa_temp“;
$log_db = „fa_log“;
$click_db = „fa_clicklog“;

Muß dort nichts geändert werden…?
ich verzweifle langsam. bin nahe dran am aufgeben.

Gruß
Claudia

vielleicht solltest du nicht gleich mit phpmyadmin anfangen!!!

hast du schon mal ganz einfach eine datei mit:

<?php print "<h1>hello world"; ?\>

ausprobiert?

immer schoen schritt fuer schritt. ok?

Hallo Claudia,

wieso lese ich dann in jeder Anleitung zu Scripten, daß es
noch in der config.php angepaßt werden muß. Hier ein Beispiel:

$db_host =„localhost“;
$db_user =„root“;

zu dem Zeitpunkt läuft das PHP-Skript ja bereits. Die o.g. Einstellungen sagen dem Skript nur, wie an die Daten in der Datenbank kommt. Das muss man in Perl-Skripte via CGI auch einstellen, hat aber nichts damit zu tun, dass die meist in …/cgi-bin stehen müssen, PHP aber meist stehen kann, wo man will.

Du solltest vermutlich wiklich nicht gleich mit so komplexen Dingen anfangen, sondern eines nach dem anderen angehen. Also erstmal PHP an sich lernen, und in ein paar Wochen dann bei Datenbanken in PHP ankommen …

Viel Erfolg
Michael

Hallo Claudia,

Ich würde mal behaupten, dass Dein Hoster kein MySQL installiert hat. Bzw. die Parameter für den Connect falsch sind.
Prüf dies doch zuerst einmal.

Gruss, Simon