/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
fopen og chmod
Fra : Brian Emilius


Dato : 18-08-03 09:01

Hej NG

Jeg har problemer med flg. script. Filen 'logfile.csv' er
skrivebeskyttet. Hvordan søren for jeg den chmod korrekt (777)?
Jeg har prøvet at skrive:
chmod("users/$userid/logfile.csv",octdec(777));
efter $filehandle-fopen linien, men det virker ikke...

Hvad gør jeg?

Venlig hilsen
Brian Emilius

Det problematiske script:

mkdir("users/$userid",octdec(777));
chmod("users/$userid",octdec(777));

$filehandle =
fopen("users/$userid/logfile.csv",octdec(777));

$filename = 'users/$userid/logfile.csv';
$somecontent =
"$userid;$realname;$usergroup;$email;;;$password\n";

if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a')) {
print "Kunne ikke åbne filen ($filename)";
exit;
}

if (!fwrite($handle, $somecontent)) {
print "Kunne ikke skrive til filen ($filename)";
exit;
}

print "OK, skrev ($somecontent) til filen ($filename)";

fclose($handle);
               
} else {
print "Filen $filename er skrivebeskyttet";
}

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Benny Nissen (18-08-2003)
Kommentar
Fra : Benny Nissen


Dato : 18-08-03 12:04

> Jeg har problemer med flg. script. Filen 'logfile.csv' er
> skrivebeskyttet. Hvordan søren for jeg den chmod korrekt (777)?
> Jeg har prøvet at skrive:
> chmod("users/$userid/logfile.csv",octdec(777));

I følge http://dk2.php.net/manual/en/function.chmod.php
skal du bruge 0777 som anden parameter til chmod.

Ved ikke, om det er det, der giver fejlen.


--
Benny Nissen



Brian Emilius (18-08-2003)
Kommentar
Fra : Brian Emilius


Dato : 18-08-03 12:22

Benny Nissen wrote in dk.edb.internet.webdesign.serverside.php:
>
> I følge http://dk2.php.net/manual/en/function.chmod.php
> skal du bruge 0777 som anden parameter til chmod.
>
> Ved ikke, om det er det, der giver fejlen.
>

Nej. Det er ikke der problemet ligger. Jeg har prøvet det php.net
beskriver som standard, men det giver samme fejlmeddelelse.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Poul-Erik Andreasen (18-08-2003)
Kommentar
Fra : Poul-Erik Andreasen


Dato : 18-08-03 14:46

On Mon, 18 Aug 2003 08:00:49 +0000 (UTC)
Brian Emilius <bkom@mail.dk> wrote:



> fopen("users/$userid/logfile.csv",octdec(777));

hvad med det her

fopen("users/$userid/logfile.csv",octdec('0777'));

Octdec kræver en string parameter,
Outputtet er ganske vist en integer men den skulle blive konverterer
automatisk, så selv om foopen kræver en string skulle det ikke give problemer

men eller må du lave en

$rettigheder = strval(octdec('0777'));
echo $rettigheder;

Så du kan se om den faktisk
udskriver det rigtige.


--
Poul-Erik Andreasen

Brian Emilius (18-08-2003)
Kommentar
Fra : Brian Emilius


Dato : 18-08-03 15:07

> men eller må du lave en
>
> $rettigheder = strval(octdec('0777'));
> echo $rettigheder;
>
> Så du kan se om den faktisk
> udskriver det rigtige.

Det du skrev hjalp ikke, men outputtet af ovenstående kode giver: 511.
Hvad betyder det så?

Velig hilsen
Brian Emilius



Peter Brodersen (18-08-2003)
Kommentar
Fra : Peter Brodersen


Dato : 18-08-03 17:29

On Mon, 18 Aug 2003 15:46:19 +0200, Poul-Erik Andreasen
<poulerik@pea.dk> wrote:

>fopen("users/$userid/logfile.csv",octdec('0777'));

Hvorfor ikke bare:
fopen("users/$userid/logfile.csv",0777);
...?

octdec('0777') og 0777 giver det samme resultat (bortset fra at octdec
her returnerer i en float, og et 0-prefixed tal returnerer en int -
men det er ikke vigtigt)

--
- Peter Brodersen

Ugens sprogtip: ærgerligt (og ikke ærgeligt)

Peter Brodersen (18-08-2003)
Kommentar
Fra : Peter Brodersen


Dato : 18-08-03 17:35

On Mon, 18 Aug 2003 18:29:16 +0200, Peter Brodersen <usenet@ter.dk>
wrote:

>Hvorfor ikke bare:
> fopen("users/$userid/logfile.csv",0777);
>..?

Altså... selvfølgelig udover at andet argument til fopen ikke skal
være read/write/execute-rettigheder, men mode i stil med "r", "w", og
så fremdeles.
http://dk.php.net/fopen
Man kan evt. sætte umask, før man kalder fopen:
http://dk.php.net/umask

Modsætningen her er fx mkdir(), hvor man kan angive mod-status
allerede i funktionen.
http://dk.php.net/mkdir

--
- Peter Brodersen

Ugens sprogtip: ærgerligt (og ikke ærgeligt)

Anders K. Madsen (18-08-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 18-08-03 17:11

On Mon, 18 Aug 2003 16:07:19 +0200
"Brian Emilius" <beskh@hotmail.com> wrote:

> > men eller må du lave en
> >
> > $rettigheder = strval(octdec('0777'));
> > echo $rettigheder;
> >
> > Så du kan se om den faktisk
> > udskriver det rigtige.
>
> Det du skrev hjalp ikke, men outputtet af ovenstående kode giver: 511.
> Hvad betyder det så?

chmod() vil helst have en oktet-værdi. Hvis du chmod'er noget til 511, så
betyder det Owner: læse, eksvekere - gruppe: eksekvere - andre: eksekvere

1 = x = execute
2 = w = write
4 = r = read

Du vil vel have rwxr-xr-x, altså 755 eller rw-r--r-- (644).
Hvis Apache har rettigheder til at ændre mode for scriptet, så må Apache
nødvendigvis være ejer, derfor er der ingen grund til at bruge 777.
755 eller 644 ville være sikrere.

Er du overhovedet sikker på at Apache har ret til at ændre mode?


Mvh.
   Madsen

--
* Anders K. Madsen * http://lillesvin.linux.dk *
* madsen@sjovedyr.dk * Linux, Ruby, PHP and SQL *

Peter Brodersen (18-08-2003)
Kommentar
Fra : Peter Brodersen


Dato : 18-08-03 17:38

On Mon, 18 Aug 2003 18:11:15 +0200, "Anders K. Madsen"
<madsen@sjovedyr.dk> wrote:

>> Det du skrev hjalp ikke, men outputtet af ovenstående kode giver: 511.
>> Hvad betyder det så?
>chmod() vil helst have en oktet-værdi. Hvis du chmod'er noget til 511, så
>betyder det Owner: læse, eksvekere - gruppe: eksekvere - andre: eksekvere

Nej, det er kun tilfældet, hvis man chmod'er noget til 0511.

Som du selv nævner, skal man kigge på oktal-værdien (ikke
oktet-værdien). Og 0777 er lig med 511. Det er blot to forskellige
måder at skrive samme tal på. Kig fx på:

<?php
umask(0);
mkdir("foo",0777);
mkdir("bar",511);
?>

Her oprettes to kataloger med præcis de samme rettigheder. Prøv evt.
selv.

--
- Peter Brodersen

Ugens sprogtip: ærgerligt (og ikke ærgeligt)

Poul-Erik Andreasen (18-08-2003)
Kommentar
Fra : Poul-Erik Andreasen


Dato : 18-08-03 17:46

On Mon, 18 Aug 2003 18:35:02 +0200
Peter Brodersen <usenet@ter.dk> wrote:

> On Mon, 18 Aug 2003 18:29:16 +0200, Peter Brodersen <usenet@ter.dk>
> wrote:
>
> >Hvorfor ikke bare:
> > fopen("users/$userid/logfile.csv",0777);
> >..?
>
> Altså... selvfølgelig udover at andet argument til fopen ikke skal
> være read/write/execute-rettigheder, men mode i stil med "r", "w", og
> så fremdeles.

Det studsede jeg også men jeg regnede med at Brian selv havde styr på det.

--
Poul-Erik Andreasen

Søg
Reklame
Statistik
Spørgsmål : 177518
Tips : 31968
Nyheder : 719565
Indlæg : 6408647
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste