Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]428[/thread]

upload bring permission denied fehlermeldung



<< >> 6 Einträge, 1 Seite
Kathrin
 2005-02-11 13:19
#4327 #4327
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
hmmm bei mri kommt folgende Fehlermeldung
Software error:
Permission denied at /usr/local/httpd/cgi-bin/frontl.cgi line 152.

For help, please send mail to the webmaster (root@malibu.zdv.liebherr.com), giving this error message and the time and date of the error.

obwohl ich die rechte auf 777 gesetzt hab :(

da es momentan auf einem linux (apache) server laufen soll, brauch ich ja binmode nicht....

was hab ich falsch gemacht?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl

use strict;
use warnings;
use DBI;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;

my $cgi = new CGI;

print $cgi->header(-type => 'text/html'); #header für HTML

##########################################################
####UPLOAD
my $filehandle_de=$cgi->upload("pdf_de");
my $filehandle_en=$cgi->upload("pdf_en");
my $filehandle_fr=$cgi->upload("pdf_fr");
my $zielVerzeichnis_de = "/home/lidos/lidos_zusdok/D/SI";
#my $zielVerzeichnis_en = "/home/lidos/lidos_zusdok/GB/SI";
#my $zielVerzeichnis_fr = "/home/lidos/lidos_zusdok/F/SI";
my $pdf_de=$cgi->param("pdf_de");
my $pdf_en=$cgi->param("pdf_en");
my $pdf_fr=$cgi->param("pdf_fr");

$pdf_de =~ s/[^A-Za-z0-9_\.\-]//g;   #nur die zeichen im [] sind im dateinamen erlaubt
#$pdf_en =~ s/[^A-Za-z0-9_\.\-]//g;
#$pdf_fr =~ s/[^A-Za-z0-9_\.\-]//g;

such_eintr();

if ($eintr) {
       upload_file($pdf_de,$filehandle_de,$zielVerzeichnis_de);
}


sub upload_file {
       my ($pdf_de,$filehandle_de,$zielVerzeichnis_de) = @_;
my $local_file = (split (/[\\\/]/,$pdf_de)) [-1];
       my $target = $zielVerzeichnis_de.'/'.$local_file;
       if (-e $target) {
               print "Zieldatei existiert bereits!";
               exit (0);
       }
       else {
binmode $filehandle_de;
               open(TARGET, ">$target") or die $!;
binmode TARGET;
               my ($buffer);
               while (read $filehandle_de,$buffer,1024)  {
                       print TARGET $buffer;
               }
               close TARGET;
               print "Ihre datei wurde unter $target gespeichert";
       }
}


such_eintr() (aufs wichtigste  gekürzt):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub such_eintr {
       print "<HTML>\n";
       print "<HEAD><TITLE>FORMULAR</TITLE>";
       print '</HEAD><BODY bgcolor ="#CCCCFF"><center>';
       print '<span style="color:P font-size:15pt"><center><b>LIDOS Zusatzinformation</b></center></span>';
       print '<form method="POST" action="/cgi-bin/frontl.cgi" enctype="multipart/form-data">';
     if ($doctyp eq 'SI') {
            print '<input type="file" name="pdf_de" size=30 maxlength=80>';
               }
       else {
            print '<textarea name="deutsch" cols="50" rows="4">'.$param->{deutsch}.'</textarea>';
               }
..................
\n\n

<!--EDIT|Kathrin|1108124683-->
renee
 2005-02-11 13:28
#4328 #4328
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du brauchst das binmode da Du ein pdf hochladen willst...

Ich nehme an, die Zeile 152 ist die Zeile, in der Du die Datei zum Schreiben öffnest.

Und mach mal:
Code: (dl )
1
2
3
       my ($pdf_de,$filehandle_de,$zielVerzeichnis_de) = @_;
my $local_file = (split(/[\\\/]/,$pdf_de))[-1];
my $target = $zielVerzeichnis_de.'/'.$local_file;
Das chmod 777 musst Du nicht auf die Datei machen, sondern auf den Ordner, in den Du schreiben willst...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Kathrin
 2005-02-11 14:33
#4329 #4329
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
ja genau ist die zeile, in der ich die Datei öffnen will....

jetzt funktionierts einwandfrei ;-))

super skript renee :) Danke
Kathrin
 2005-02-11 16:24
#4330 #4330
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
hmmm jetzt hab ich mal die sub upload_file in das skript eingebunden und jetzt gibt er mir jedesmal Zieldatei existiert bereits! aus...
obwohl die datei im $zielVerzeichnis noch nicht existiert.  
:rock:
wenn ich es seperat ausführe wie oben, dann funktionierts aber wieder...

erst mal wird vom skript aus der sende Button mit dem namen "eintr" betätigt und springt somit dann in die tab_einf() subroutine.
Code: (dl )
1
2
3
4
5
6
7
8
9
main();

sub main {
       print $cgi->header(-type => 'text/html'); #header für HTML
      if ($eintr)  {
               if ($identnr =~m/^\d{6,9}[AB]?$/) {
                       tab_einf()
               }
.....


und hier dann die tab_einf() sub... ich porste mal lieber alles hier, weil mir der fehler nicht aufgefallen ist...
ich wollte eigentlich nur, dass ein update passiert, wenn auch wirklich ein beispielsweise $head_de vorhanden ist...
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
sub tab_einf  {
       if ($eintr) {
               &check_doctype();
       }
       my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr;

       my $statement_check="SELECT ident_nr, docname FROM zusdoc WHERE ident_nr='$identnr' and docname='$docname'";
       my $statement_insert="INSERT INTO $TABELLE VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

       my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
       my $sth_check=$dbh->prepare($statement_check) or die $DBI::errstr;
       $sth_check->execute or die $DBI::errstr;

       my ($merker_d, $merker_e, $merker_f) = 1 x 3;
       my $merker = 0;

       if ($doctyp eq 'EI')
       {
           if (($check1 || $check2 || $check3 || $check4 || $check5) and $ersteller and $werk)
           {
               if ($head_de and $deutsch)
               {
                       $merker_d = 1;
               }
               elsif ($head_de or $deutsch) {
                       $merker_d = 0;
               }
               else {
                       $merker_d = 1;
               }
               if ($head_en and $englisch)
               {
                       $merker_e = 1;
               }
               elsif ($head_en or $englisch)  {
                       $merker_e = 0;
               }
               else {
                       $merker_e = 1;
               }
               if ($head_fr and $franz)
               {
                       $merker_f = 1;
               }
               elsif ($head_fr or $franz)  {
                       $merker_f = 0;
               }
               else {
                       $merker_f = 1;
               }
           }
       }

       elsif ($doctyp eq 'SI') {
          unless ($sth_check->fetchrow_array())  {
               if (($check1 || $check2 || $check3 || $check4 || $check5) && $ersteller && $werk && $docname)
               {
                   if ($head_de and $pdf_de)
                       {
                       $merker_d = 1;
                   }
                   elsif ($head_de or $pdf_de) {
                      $merker_d = 0;
                   }
                   else {
                       $merker_d = 1;
                   }
                   if ($head_en and $pdf_en)
                       {
                       $merker_e = 1;
                   }
                   elsif ($head_en or $pdf_en) {
                       $merker_e = 0;
                   }
                   else {
                       $merker_e = 1;
                   }
                   if ($head_fr and $pdf_fr)
                       {
                       $merker_f = 1;
                   }
                   elsif ($head_fr or $pdf_fr) {
                       $merker_f = 0;
                   }
                   else {
                       $merker_f = 1;
                   }
               }
           }
       }
#Einfügen in tabelle
       if ($merker_d && $merker_e && $merker_f) {
               if ($head_de) {
                    $sth_insert->execute($identnr,'DE',$doctyp,$docname,$head_de,$deutsch,$date,$ersteller,$werk,$check1,$check2,
$check3,$check4,$check5) or die $DBI::errstr;
                    upload_file();
                    $merker=1;
               }
               if ($head_en) {
                   $sth_insert->execute($identnr,'EN',$doctyp,$docname,$head_en,$englisch,$date,$ersteller,$werk,$check1,$check2,
$check3,$check4,$check5) or die $DBI::errstr;
                    $merker=1;
               }
               if ($head_fr) {
                    $sth_insert->execute($identnr,'FR',$doctyp,$docname,$head_fr,$franz,$date,$ersteller,$werk,$check1,$check2,
$check3,$check4,$check5) or die $DBI::errstr;
                    $merker=1;
               }
           }



       if ($merker == 0)  {
               &warnung();
       }
       else  {
           if ($eintr) {
               &ausgabe_neu();
           }
           elsif ($aktual) {
               &ausgabe_aktual();
           }
       }
       $sth_check->finish();
       $sth_insert->finish();
       $dbh->disconnect();
}
\n\n

<!--EDIT|Kathrin|1108131997-->
renee
 2005-02-11 16:30
#4331 #4331
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du musst beim Aufruf der upload()-Methode noch den Namen der hochzuladenden Datei ($pdf_de bzw. $pdf_en...), den Zielpfad etc angeben. Also alles, was Du in der upload()-Methode per ...= @_ als Parameter erwartest...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Kathrin
 2005-02-11 16:37
#4332 #4332
User since
2004-12-15
158 Artikel
BenutzerIn
[default_avatar]
oh man, hab ich voll übersehen in der eile... :angry:

danke, jetzt müsste es gehen
<< >> 6 Einträge, 1 Seite



View all threads created 2005-02-11 13:19.