|
| 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
| |
|
|