Benötigt Apache spezielle Einstellungen, um einen Befehl auszuführen?

1

Ich versuche mit Bio :: Perl / Bio :: Graphics ein Image zu erstellen und auf meinem Webserver zu implementieren. Wenn ich jedoch versuche, meine Skripts online auszuführen, reagiert die Befehlszeile nicht auf die Ausführung meines Skripts.

Eine meiner Perl-Moduldateien enthält diesen Systembefehl:

my $command = "perl Graphics.pl $start $end $attributes";
system($command);

Alle Werte werden an diesen Befehl weitergeleitet und alle Skripte funktionieren einwandfrei, wenn sie manuell über die Befehlszeile ausgeführt werden. Apache meldet keine Fehlermeldungen, außer dass die Datei, die es in Graphics.pl erstellen sollte, nicht erstellt wurde:

> [Mon Dec 16 12:15:59 2013] [error] [client ::1] Cannot Open Output 59_15_12_16_11_113_1_349_0.png, referer: http://localhost/~User/cgi-bin/Home.pl

>[Mon Dec 16 12:15:59 2013] [error] [client ::1] File does not exist: /Users/User/Sites/cgi-bin/59_15_12_16_11_113_1_349_0.png, referer: http://localhost/~User/cgi-bin/Results.pl?start=1000&end=20000&chr=All&type=protein

Gibt es eine zusätzliche Einstellung, die in den Apache-Einstellungen konfiguriert werden muss, damit die Befehlszeile verwendet werden kann?

Meine Spezifikationen sind die folgenden:

  • Serverversion: Apache / 2.2.24 (Unix)
  • Perl 5, Version 16, Subversion 2 (v5.16.2)
  • Mac OS 10.9 Mavericks

Jede Hilfe wäre sehr dankbar.

fsimkovic
quelle
Dies scheint bei stackoverflow.com viel aktueller zu sein als hier.
Deceze
Es gibt mehrere Websites, auf denen dies zum Thema gehört. Lassen Sie den Fragesteller jedoch entscheiden, wo er es platzieren möchte. @felix wie hast du apache installiert und / oder konfiguriert / gestartet?
bmike
1
Hat der Webserver Schreibzugriff auf /Users/User/Sites/cgi-bin/?
Nohillside
@patrix Ja, der Webserver hat Zugriff auf das Verzeichnis.
Fsimkovic
@bmike Ich war mir nicht sicher, wo ich diese Frage stellen sollte. Apache wurde standardmäßig installiert und gemäß den normalen Richtlinien konfiguriert. Alles scheint gut zu funktionieren. Es führt die Skripte so aus, wie es soll. Hat Zugriff auf die Perl-Module und zeigt sie gemäß dem HTML-Code korrekt an. Es ist nur dieser Befehl, den es bei der Ausführung ignoriert.
Fsimkovic

Antworten:

1

Das Problem ist gelöst worden. Grundsätzlich hatte Apache keine Berechtigung, in den Ordner zu schreiben. Schritte zur Lösung des Problems waren:

  1. ls -la cgi-binum die Berechtigungen meines cgi-binOrdners zu überprüfen .
  2. Geben Sie die _wwwGruppenzugehörigkeit cgi-binund die Gruppenschreibrechte geben : chgrp -R _www cgi-bin && chmod g+w cgi-bin.
  3. Außerdem habe ich meinen Benutzer zur Gruppe hinzugefügt, _wwwdamit ich mich nicht jedes Mal authentifizieren muss, wenn ich eine Datei in den cgi-binOrdner hinzufüge .
  4. sudo dseditgroup -o edit -a ikr -t user _wwwwurde für Schritt 3 verwendet (ikr muss durch den hinzuzufügenden Benutzernamen ersetzt werden)
fsimkovic
quelle
Dachte mir :-) Vielen Dank, dass Sie uns eine detaillierte Beschreibung zur Behebung dieses Problems gegeben haben.
Nohillside
@patrix Ja, zu der Zeit war ich mir nicht sicher, was genau du meinst. Jemand in StackOverflow wies mich in die richtige Richtung, indem er mich bat, die httpd.conf-Datei zu überprüfen und die Berechtigungen darin zu sehen. War der lange Weg aber am Ende da :)
Trotzdem