Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Probs



V12
29-12-2001, 21:46
habe redhat 7.1, perl ist installiert aber die progamme finden perl nicht, in der /user/bin/ ist perl aber vorhanden vielleicht kann mir wer helfen

thx

Zaphod-B
29-12-2001, 22:16
Moin,
ist es vielleicht möglich, das die Version nicht übereinstimmt ?
Das Problem hatte ich auch, 5.6.0 war gefordert 5.6.1 war vorhanden. Also habe ich einen Symbolischen Link gesetzt, in der Hoffnung das Perl abwärts kompatibel ist. Du gibtst in der Konsole als root ein:

ln -s /usr/lib/perl5/5.6.1 /usr/lib/perl5/5.6.0

Danach gings dann bei mir.
Ich hoffe ich konnte helfen.

Greetings Zaphod-B

V12
29-12-2001, 22:24
thx aber wenn ich das eingebe hab ich permission deniend und zudem habe ich 5.6.0 drauf, aber trotzdem thx für die hilfe

sticky bit
30-12-2001, 01:06
Also unter /usr/bin/perl ist ein Link, worauf zeigt der denn?
Und was heisst "die Programme finden PERL nicht"? Wenn du in der shell perl -e 'print("Hallo Welt\n");' eingibst geht das?

V12
30-12-2001, 01:29
thx perl geht jetzt aber ich hab nen fehler im apache server, der kann die perl datein nicht wiedergeben vielleicht kann mir da auch einer helfen

sticky bit
30-12-2001, 02:13
Füg mal folgendes in die httpd.conf sofern nich schon vor Handen ein:


AddHandler cgi-script .cgi
AddHandler cgi-script .pl

Action application/x-httpd-cgi "Pfad zu perl"

Je nachdem ob du das ScriptAlias


ScriptAlias /cgi-bin/ "Pfad zur cgi-bin"

gesetzt hast, kannst du bzw. der Server dann entweder überall (ohne SciptAlias) oder im cgi-bin (mit...) PERL-Skripte mit der Endung *.pl und *.cgi ausführen, musst nur schauen, dass das cgi-bin, bzw. die / das Verzeichnis / e in dem er Skripte ausführen soll auch nich die Berechtigung dazu haben, also entweder Options All oder Options ExecCGI oder Option +ExecCGI, also entweder alles, alles was eshalt so an Optionen gibt, Indexing, Symlinks bla, bla oder nur das Ausführen von CGI's oder wenn es ein Verzeichniss ist, dass schon unterhalb eines definierten Verzeichnises liegt (das obere Verzeichnis kann auch der DocRoot sein...) dann die Optionen von diesem über nehmen und noch das Ausführen von CGI's hinzufügen...
Ach js und die Skripte müssen eine Datei-Berechtigung von 755 (-rwxr-xr-x) haben. (chmod 755 deinskript.pl)

Wenn das so stimmt und die Shebang in deinen Skripten auch (in dem Fall (wie in den meissten)#!/usr/bin/perl) und es trotzdem nicht läuft, dann kann eigentlich nur ein Sntaxfehler im Skript die Ursache sein, kriegst du einen 500er oder den Quelltext des Skriptes zu sehen?
Wenn das Skript in der Konsole läuft, auf dem Server nur einen 500er bringt, dann hast du wahrscheinlich den Content-Type vergessen, fürg dazu einfach als erset Anweisung in dein Skript die Zeile print("Content-Type: text/html\n\n"); ein (vorraus gesetzt deine Ausgabe ist HTML, wovon ich aber jetu´zt mal ausgehe, ist eigentlich auch Wurscht, zumindest der 500er ist dann weg wenn er nicht von wo anders kommt...)
Wenn das alles nicht geholfen hat müsstest ud mal genauer beschreiben was so pasiert und den Source deines Skriptes sowie vielleicht der httpd.conf posten...

V12
30-12-2001, 10:07
k habe dein zeilen eingefügt, jetzt bekomme ich

Forbidden
You don't have permission to access /~xboxnews/cgi-bin/test.cgi on this server.

die chmods sind aber alle auf 755 gesetzt und ja es soll in html ausgegeben werden. wenn ich irgendetwas aus der httpd.conf hier posten soll mußt es mir sagen ich bin ein absoluter newbie in linux redhat 7.1

thx

sticky bit
30-12-2001, 16:38
Hmm, *denk*...
Poste mal alle Einträge in der httpd.conf die so aussehen:


<Directory *>
*
</Directory>

Ach ja und was sagt der Sever wenn du nur /~xboxnews/cgi-bin/ aufrufst? Auch Forbidden?
Ach ja und die Verzeichniss auf die der Server zugreift müssen auch 755 sein...

V12
31-12-2001, 08:28
hier meine http.conf

in /etc/httpd/conf/httpd.conf


# Each directory to which Apache has access, can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# permissions.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>


#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
# Order deny,allow
# Deny from all
# </Limit>
#</Directory>

#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL. So "/icons" isn't aliased in this
# example, only "/icons/"..
#
Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Action application/x-httpd-cgi "/usr/bin/perl"

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI +Includes
Order allow,deny
Allow from all
</Directory>


so das ist alles wo da ist, wenn geht meld dich doch mal per mail oder pm wenn es dir helfen sollte könnte ich auch ein ssh zugang für dich einrichten dann kannst selber mal schauen und thx schonmal

sticky bit
31-12-2001, 13:44
Hmm, irgendwie fehlt mir der DocumentRoot, ansonsten sieht eigentlich gut aus. Ich glaube es liegt auch an dem Fehlenden DocumentRoot, probiers mal aus, such mal nach deinem DocumentRoot, also nach dieser Zeile:


DocumentRoot "Pfad zum DocumentRoot"

Und dann füg mal noch folgendes in die httpd.conf:


<Directory "Pfad zum DocumentRoot">
Options All
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Der Pfad ist dann wahrscheinlich [i]/var/www/htdocs/[i] wenn ich das richtig deute, musst halt nachsehen und sollte eigentlich egal sein wo der hin geht weil die anderen Sachen ja Aliase sind...

V12
31-12-2001, 14:10
funzt immernochned

die url:

http://62.16.36.46/~xboxnews/cgi-bin/yabb/YaBB.pl

V12
31-12-2001, 16:15
hab den fehler gefunden aber wie beseitige ich den???


[Mon Dec 31 16:41:50 2001] [error] [client 217.80.95.130] Options ExecCGI is off in this directory: /home/xboxnews/public_html/cgi-$

sticky bit
01-01-2002, 02:48
Also ist public_html dein DocumentRoot?
Hmm, entwder du verschiebst das Skript in das cgi-bin, aber das richtige, "/var/www/cgi-bin/". Es sieht nämlich so aus, als ob du es nach "/home/xboxnews/public_html/cgi-bin" getan hast, das ist definitif nicht das cgi-bin das du als ScriptAlias definiert hast.
Oder du bennenst "/home/xboxnews/public_html/cgi-bin" als ScriptAlias oder du löscht das ScriptAlias ganz und lässt für den gesamten DocumentRoot abwärts PERL-Skripting zu...

V12
01-01-2002, 23:45
hmmm also mir bringt es nix wenn ich immer nur in einem bestimmten ordner cgi habe ich brauch das überall weil dort nicht nur eine webseite drauf laufen soll sonderen mehrere und wenn ich den AddHandler cgi-script .cgi .pl aktiviere habe ich forbidden als meldung, dort steht dann in der apache einleitung das man das <Files> ...... löschen soll, wenn ich dann das mache dann findet er garnixmehr, ich weiß echt nichtmerh weiter

lolli
03-01-2002, 08:53
für den fall, dass es "immernochnicht" läuft:
ändere mal

ScriptAlias /cgi-bin/ "Pfad zur deinem cgi-bin-dir"

in

ScriptAlias /~xboxnews/cgi-bin/ "Pfad zur deinem cgi-bin-dir"


oliver