Schrift
[thread]10657[/thread]

HTML Seite mit Links mittels Perl-Module erstellen (Seite 4)

Leser: 6


<< |< 1 2 3 4 5 6 >| >> 54 Einträge, 6 Seiten
GwenDragon
 2007-10-27 16:45
#101461 #101461
User since
2005-01-17
14563 Artikel
Admin1
[Homepage]
user image
Ja, dann musst du Documentroot so setzen, dass es auf dein zu (durchsuchendes) Verzeichnis zeigt oder die Dateien in Documentroot kopieren.


Ich kann es leider bei dir nicht nachvollziehen, da es auf meinem lokalen rechner läuft.


Das soll doch nur auf deinem Rechner laufen, oder? Oder im Internet?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

rooky
 2007-10-27 19:01
#101468 #101468
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Es wird auch im internet laufen auf ein Suse 9.3 Betriebsystem
GwenDragon
 2007-10-27 19:27
#101471 #101471
User since
2005-01-17
14563 Artikel
Admin1
[Homepage]
user image
Dann geht das mit file:// auch nicht.

Du musst dann schon deine Dateien, die du bereit stellen willst auch innerhalb Documentroot haben!
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

rooky
 2007-10-27 23:06
#101488 #101488
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Also Leute ich weiss es nicht mehr weiter das Skript läuft aber ich kann immer noch nicht die PDFs öffnen. Alle Einstellungen wurden von mir vorgenommen. Hier eine Zusammenfassung:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DocumentRoot "/home/user"

<Directory "/home/user/">
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs-2.2/mod/core.html#options
# for more information.
Options None
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
AllowOverride None
# Controls who can get stuff from this server.
Order allow,deny
Allow from all
</Directory>

ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

# "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>

Rechte mit chmod 755 skript.pl


Vielleicht sollte ich nochmal apache deinstallieren und wieder installieren, obwohl ich nicht sehe was das mir bringen sollte. Alles ist Default-Einstellung ausser DocumentRoot.
rooky
 2007-10-28 00:46
#101489 #101489
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo könnte jemand das Sript bei scih testen damit wüsste ich ob bei mir bei apache das Problem liegt oder am Sript.
Das Skript
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl

use strict;
use warnings;
use HTML::Template::Compiled; # musst du wahrscheinlich noch installieren
use File::Find;
use CGI;
my @files;
find( \&wanted, '/home/user' );
my $cgih = new CGI;
print $cgih->header();

my $content = do{ local $/; <DATA> };
my $tmpl = HTML::Template::Compiled->new( scalarref => \$content );
my @links = map{ {HREF => $_, TITLE => $_ } }@files;
$tmpl->param( LINKS => \@links );
print $tmpl->output;

sub wanted{
push @files, $_ if /\.pdf$/;
}


__DATA__
<html>
<body>
<ul>
<%LOOP LINKS %><li><a href="<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li>
<%/LOOP %>
</ul>
</body>
</html>

ruft dieses zweite auf

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#! /usr/bin/perl -w
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if 0; #$running_under_some_shell

use strict;
use File::Find ();

# Set the variable $File::Find::dont_use_nlink if you're using AFS,
# since AFS cheats.

# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name = *File::Find::name;
*dir = *File::Find::dir;
*prune = *File::Find::prune;

sub wanted;



# Traverse desired filesystems

Danke
File::Find::find({wanted => \&wanted}, '/home/user');
exit;


sub wanted {
/^.*\.pdf\z/s &&
print("$name\n");
}

sollte idearlerweise unter linux ausprobiert werden.
rooky
 2007-10-28 16:41
#101500 #101500
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen heute habe ich apache deinstalliert und neu installiert. Ich habe die Default-Konfiguration beibehalten. Also

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
DocumentRoot "/srv/www/htdocs"

#
# Configure the DocumentRoot
#
<Directory "/srv/www/htdocs">
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs-2.2/mod/core.html#options
# for more information.
Options None
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
AllowOverride None
# Controls who can get stuff from this server.
Order allow,deny
Allow from all
</Directory>

ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

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


Meine PDFs habe ich im /srv/www/htdocs und meine Skripte im /srv/www/cgi-bin gespeichert wie apache es möchte.

Nun wenn ich mein Skript im Browser unter http://localhost/cgi-bin/skript.pl aufrufe holt es wie erwünscht meine PDFs aus /srv/www/htdocs.

Jetzt das Problem wenn ich ein PDF anklicke bekomme ich die Fehlermeldung:

Code: (dl )
1
2
3
4
5
6
7
8
9
Objekt nicht gefunden!

Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
Sun Oct 28 15:14:13 2007
Apache/2.2.3 (Linux/SUSE)

und da liegt das Problem ich habe mir die Link-Adresse einer der PDFs kopiert und hier ist was ich bekomme
Code: (dl )
http://localhost/cgi-bin/Datei.pdf
. Was offensichtlich falsch ist. Der Link sollte zu /srv/www/htdocs zeigen, ich weiss nicht wie der Link im Browser aussehen sollte aber jedenfalls nicht so dass er auf cgi-bin zeigt. Wie löse ich das Problem.

Vielen Dank an alle
Linuxer
 2007-10-28 17:39
#101502 #101502
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
[edit]absatz gestrichen weil sonntag (lesefehler meinerseits)[/edit]
Wenn ein CGI-Skript einen Link generiert, der keine Pfadangabe definiert, dann wird das immer relativ zum aktuellen Verzeichnis gewertet, in diesem Fall also das Verzeichnis cgi-bin.
Also ist ein Link <a href="datei.pdf">datei.pdf</a> als <a href="/cgi-bin/datei.pdf">datei.pdf</a> zu lesen.

Passe die Zeile
Code (perl): (dl )
my @links = map{ {HREF => $_, TITLE => $_ } }@files;

so an, dass sie Dir die korrekte Pfadangabe für den Browser liefert.

Wenn also Deine PDFs im Documentroot unter /srv/www/htdocs liegen, dann fehlt einfach ein '/' vor den Links:

Ändere die zitierte Zeile mal auf dieses hier und versuch es erneut:
Code (perl): (dl )
my @links = map{ {HREF => '/' . $_, TITLE => $_ } }@files;
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
rooky
 2007-10-28 18:12
#101503 #101503
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo Linuxer und danke für die schnelle Hilfe ich habe die Zeile so angepasst wie du meintest

Code: (dl )
my @links = map{ {HREF => '/' . $_, TITLE => $_ } }@files;

Es funktioniert leider noch nicht. Hier die Linksadresse einer der PDFs

Code: (dl )
http://localhost/cgi-bin/%2FDatei.pdf
pq
 2007-10-28 19:48
#101504 #101504
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
lass mal das escape=URL weg. oder schreib den slash ins template statt in den HREF-parameter.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
rooky
 2007-10-28 20:18
#101507 #101507
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Wunderschön pq es funktioniert wie geschmiert.

Vielen Dank
<< |< 1 2 3 4 5 6 >| >> 54 Einträge, 6 Seiten



View all threads created 2007-10-25 01:56.