PHP-Script in CGI-Verzeichnis ausführen

pesoi

Mitglied
Hi, PHP-er

habe mal wider eine kleine Farge an euch.

Ich benutze WinXP,Apache2.2.4,PHP5.2.3-als modul,PERL5.8.8
Volle Zugriff auf httpd.conf und php.ini

Jetzt meine Frage.

Habe ein Verzeichnis cgi-bin wo alle meine .pl .cgi dateien sind.
Es werden nur in diese Verzeichnis cgi und perl dateien ausgeführt.
Auszug aus httpd.conf:
Code:
ScriptAlias /cgi-bin/ "Laufwerk:/meine/Daten/cgi-bin/"
<Directory "Laufwerk:/meine/Daten/cgi-bin/"
AddHandler cgi-script .pl
AddHandler cgi-script .cgi 
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

Da ich aber noch ein paar php Dateien in dem cgi-bin Verzeichins habe wolte ich denen auch erlauben das die in dem Verzeichnis cgi-bin ausführbar sind.

Bis jetzt ist mir aber noch nicht gelungen die php in dem cgi-bin Verzeichnis auszuführen,es kommt immer die download-fenster raus. Cgi und .perl werden wie gewolt nur in diesem verzeichnis ausgeführt. PHP aber nicht.In alle anderen Verzeichnisen werden die php augeführt nur nicht in dem cgi-bin.

meine cgi-bin verzeichnis befindet sich in dem root-verzeichnis.

Wer kann mir eine Ansatz geben wie das zu erledigen ist?

grüß aus Essen

pesoi
 
Zuletzt bearbeitet:
Nunja, eigentlich braucht PHP kein cgi-bin. Wenn man es dennoch so machen möchte, einfach in der httpd.conf im cgi-bin als Direktive rein schreiben

AddType application/x-httpd-php .php .php3 .php4 .php5 .whatever


Dann sollte das schon hinhauen, solange das PHP-Modul mittels LoadModule-Direktive geladen wurde.
 
Guten morgen.

saftmeister, soll das so sein?

ScriptAlias /cgi-bin/ "Laufwerk:/meine/Daten/cgi-bin/"
<Directory "Laufwerk:/meine/Daten/cgi-bin/">
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
AddType application/x-httpd-php .php .whatever
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

das bringt aber eine error.( error.log)

Code:
/seite.php is not executable; ensure interpreted scripts have "#!" first line, 
(9)Bad file descriptor: don't know how to spawn child process:

er will das php sript als cgi ausführen,was es nicht geht.

Mach ich wieder mal eine Denkfehler?
 
Soweit ich weis ist die cgi-bin verzeichnis dazu da um nur die cgi un.pl datei auszuführen.
Wenn man das cgi-bin per ScriptAlias einfügt dann werden die cgi und .pl nur aus diesem Verzeichnis und nirgendwo mehr ausgeführt.
Wie sag ich den Apache er soll aus dem verzeichnis auch PHP ausführen?
 
Warum willst du die PHP-Scripte unbedingt in das cgi-bin verzeichnis legen? Leg die Scripte einfach irgendwo unterhalb von DocumentRoot und ruf sie von dort auf. Ich sehe erstens keinen Sinn darin, PHP-Scripts aus dem cgi-bin aufzurufen, daher kann ich nicht 100%ig sagen, ob das so richtig ist.

Wahlweise steht der Fehler doch auch schon drin. Füge in der ersten Zeile des Scripts einfach den shebang und den Pfad zum PHP-Interpreter ein:

PHP:
#!/usr/bin/php
<?php
echo "hallo welt";
?>

Grüße
 
Hallo!
ScriptAlias /cgi-bin/ "Laufwerk:/meine/Daten/cgi-bin/"
<Directory "Laufwerk:/meine/Daten/cgi-bin/">
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
AddType application/x-httpd-php .php .whatever
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler application/x-httpd-php .php

Gruss Dr Dau

[edit]
Füge in der ersten Zeile des Scripts einfach den shebang und den Pfad zum PHP-Interpreter ein:

PHP:
#!/usr/bin/php
<?php
echo "hallo welt";
?>
Bringt unter Windows aber nicht viel. ;)
Und ist zudem auch überflüssig.
[/edit]
 
Zuletzt bearbeitet:
Hi,
danke für Ihr Antworten.

Ich ändere eine HP und da sind schon ein paar php scripte in dem cgi-verzeichnis.Wenn ich die in einen ander verzeichnis verschiebe dann muss ich die ganze html scripte usw ändern.(und es sind schon ein paar) Vorher ist die HP auf eine OmniHTTPd server gelaufen,jetzt sollte eine Apache her.

grüß aus Essen

pesoi
 
Zitat Dr Dau

AddHandler application/x-httpd-php .php

das bringt aiuch nicht viel. Bekomme immer die download-fenster für php. Alle PHP scripte enthalten keine Fehler da wenn die cgi-bin nich mit scriptAlias in httpd.conf eingefügt wird lauft alles wunderbar.

Ist das überhaupt ein Problemm wenn cgi-scripte überal auf dem web-root ausführbar sind?
 
Also bei mir hat es wunderbar funktioniert (AddType hingegen hat bei mir einen Error 500 verursacht).
Die phpinfo.php in cgi-bin hat mir schön brav alles angezeigt. ;)
Bei Dir scheint also noch wo anders ein Problem zu stecken.

Prinzipiell ist es kein Problem CGI-Scripte überall auszuführen (entsprechende Konfiguration natürlich vorausgesetzt).
Bei meinem Hoster z.b. (dort habe ich nur ein User-Dir) kann ich CGI-Scripte überall ausführen.
Der Ordnung halber habe ich mir aber ein Verzeichnis Names cgi-bin angelegt und dort all meine CGI-Scripte abgelegt.
Sieht einfach schöner aus und es ist nichts durcheinandergewürfelt. ;)
 
Zurück