Thread Seit Apache Update Perl-Problem (5 answers)
Opened by prentice at 2019-05-05 20:08

Linuxer
 2019-05-05 23:28
#190005 #190005
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Herzlich willkommen im Forum,

wichtig, gerade beim Schreiben von Dateien, ist es, den Erfolg zu überprüfen und auch die Meldung im Fehlerfall auszugeben.

z.B.:
Code (perl): (dl )
1
2
3
4
5
open( my $handle, '>', $file ) or die "open($file,w) failed: $!";

print $handle "Dein Text" or die "print to $file failed: $!";

close $handle or die "close $file failed: $!";


Wenn Du Dir $! nicht ausgeben lässt, ist es blindes Raten, was die Ursache sein könnte.
Spar Dir diese Mühe und lass $! ausgeben.
Kontrolliere das Error-Log des Webservers, was darin im Fehlerfall steht.

Ich vermute mal, Du hast ein Berechtigungsproblem:

Mögliche Ursachen:
1. Schreib-/Lese-Berechtigungen
2. Webserver läuft mit anderer Benutzerkennung und hat (aufgrund 1.) kein Recht, Dateien im Verzeichnis anzulegen.

In der Regel sollte ein Webserver mit so wenig Rechten wie möglich laufen. Bei manchen Distributionen ist das der Benutzer "nobody", bei anderen ein Benutzer "www-run".

Wenn dieser Benutzer Dateien in Verzeichnissen schreiben soll, muss er dafür die Berechtigung haben.

Entweder, weil ihm das Verzeichnis gehört (z.B. chown "nobody" $verzeichnis) oder weil der Besitzer ihm die notwendigen Rechte eingeräumt hat. Das kann man machen, indem man beispielsweise die Gruppenberechtigung so setzt, dass der Webserver-Benutzer schreiben darf oder man erlaubt "allen anderen" das Schreiben in den Ordner.

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
# Sagen wir, dem Benutzer "helmut" gehört die Verzeichnis-Struktur unter /var/www/example.org
# Alle Verzeichnisse darin gehören diesem Benutzer und auch der Gruppe "helmut"

# Der Webserver laufe hier als Benutzer "www-run"

# und darin soll der Webserver in ein eigenes Logverzeichnis schreiben dürfen:
# Als "helmut" das Verzeichnis anlegen
mkdir -p /var/www/example.org/scriptlog

# 1. Variante; das neue Verzeichnis gehört "helmut" und der Gruppe "helmut"
# "alle anderen" erhalten Schreibrechte auf das Verzeichnis, darunter fällt dann auch der Webserver-Benutzer (s.u.)
chmod o+w /var/www/example.org/scriptlog

2. Variante; das Vezeichnis soll dem Benutzer des Webservers gehören und die Benutzer der Gruppe "helmut" sollen darin lesen dürfen
# als root:
chown www-run:helmut /var/www/example.org/scriptlog
chmod u+w,g-w+r,o-rwx /var/www/example.org/scriptlog

Merkhilfe:
u => User: Der Benutzer, dem die Datei/das Verzeichnis gehört
g => Group: Die Gruppe, die zusätzlich "Besitzanspruch" hat
o => Others: Alle anderen im System (alle, die nicht Besitzer der Datei sind und auch nicht der besitzenden Gruppe angehören)

mit + und - gibt oder nimmt man Rechte:
w = write => Schreibrechte
r = read => Leserechte
x = execute => Ausführenrechte (bei Verzeichnissen das Recht, ins Verzeichnis zu wechseln)



Den veralteten Softwarestand (Wirklich CentOS 6.1? Perl 5.8.8) ignorieren wir mal. Das wäre ein eigenes Fass, was man da aufmachen müsste und hier nicht behandelt werden kann. Aber das nur als Hinweis...



edit: Tippfehler korrigiert
Last edited: 2019-05-06 14:29:59 +0200 (CEST)
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!

View full thread Seit Apache Update Perl-Problem