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.
/Users/User/Sites/cgi-bin/
?Antworten:
Das Problem ist gelöst worden. Grundsätzlich hatte Apache keine Berechtigung, in den Ordner zu schreiben. Schritte zur Lösung des Problems waren:
ls -la cgi-bin
um die Berechtigungen meinescgi-bin
Ordners zu überprüfen ._www
Gruppenzugehörigkeitcgi-bin
und die Gruppenschreibrechte geben :chgrp -R _www cgi-bin && chmod g+w cgi-bin
._www
damit ich mich nicht jedes Mal authentifizieren muss, wenn ich eine Datei in dencgi-bin
Ordner hinzufüge .sudo dseditgroup -o edit -a ikr -t user _www
wurde für Schritt 3 verwendet (ikr muss durch den hinzuzufügenden Benutzernamen ersetzt werden)quelle