Avatar billede webweaver Praktikant
01. oktober 2007 - 20:25 Der er 39 kommentarer og
1 løsning

Problemer både med chmod og unlink

Godaften.

Jeg kan ikke få min chmod eller unlink(); funktion til at virke.
Der sker intet med filerne, når jeg kigger på FTP'en. Filerne ligger på Surftown, ved ikke om der er nogle der har erfaringer med specielle server opsætninger der eller lignende?

Anyways, jeg skriver i min PHP fil;

chmod("install.php", 07777);
unlink("install.php");

Kan ikke se nogle fejl der?

Nogen som har nogle bud?

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede nielle Nybegynder
01. oktober 2007 - 20:42 #1
chmod("install.php", 07777);

skal være:

chmod("install.php", 0777);
Avatar billede webweaver Praktikant
01. oktober 2007 - 21:44 #2
Det var bare en tastefejl...
Så det var desværre ikke fejlen.
Avatar billede nielle Nybegynder
01. oktober 2007 - 21:48 #3
Returnere dit kald til chmod true eller false?
Avatar billede webweaver Praktikant
03. oktober 2007 - 20:11 #4
Den returnerer true værdi ...
Avatar billede nielle Nybegynder
03. oktober 2007 - 20:15 #5
Det er ellers indikationen af at det går godt. Hvordan tjekker du efter at det ikke er sket der der skulle?
Avatar billede webweaver Praktikant
03. oktober 2007 - 21:41 #6
Umiddelbart giver jeg bare chmod en variabel.. $var = chmod(); ...

og så bare if ($var = true) {
echo "true...";
}

Kan det ikke gøres sådan?
Avatar billede nielle Nybegynder
03. oktober 2007 - 21:51 #7
Nej:

if ($var == true) {
echo "true...";
}

- eller:

if ($var === true) {
echo "true...";
}

- men aldrig kun 1 =-tegn for det giver dig bare en tildeling
Avatar billede webweaver Praktikant
03. oktober 2007 - 22:46 #8
Sorry igen en tastefejl.. Har 2 == tegn.. Men havde kommet til at slette 0 så der bare stod 777. Nu skrev jeg 0777, og nu melder den false .. Hmmm..

Hvad så nu? :/
Avatar billede nielle Nybegynder
03. oktober 2007 - 22:49 #9
Har du kigget på privilegierne for det bibliotek, hvor det hele foregår? Du kan ikke få lov til at lave emere med filerne end bibliotetet selvc tillader.
Avatar billede webweaver Praktikant
03. oktober 2007 - 22:59 #10
Det kunne måske godt tænkes at være derfor så evt.
Det prøver jeg lige at checke en gang :)
Avatar billede webweaver Praktikant
03. oktober 2007 - 23:26 #11
Det gør desværre ingen forskel. Om jeg sætter CHMOD til 777 på "hovedmappen" og endda også filen jeg kører chmod(); i, har den stadig samme problem. Intet sker.

Jeg kan se at min unlink(); virker trods alt, hvis jeg manualt stiller CHMOD.
Så er det er kun chmod(); der er problemer med.
Avatar billede nielle Nybegynder
04. oktober 2007 - 06:47 #12
03/10-2007 22:46:43> Skal det forstås sådan at den melder true/succes ved "777" - altså uden 0 foran?

03/10-2007 23:26:00> Måske har webhotellet simpelthen lukket af for den mulighed af sikkerhedsmæssige grunde. Prøv at tjekke med dem.
Avatar billede webweaver Praktikant
04. oktober 2007 - 11:41 #13
03/10-2007 22:46:43> Skal det forstås sådan at den melder true/succes ved "777" - altså uden 0 foran?

Det kunne umiddelbart godt se sådan ud.

Men jeg tjekker lige med Surftown om de har lukket af for denne mulighed. ;(

Kunne der evt. være nogen god grund til at disable den?
Avatar billede nielle Nybegynder
04. oktober 2007 - 11:52 #14
Ja - f.eks. tillader den i princippet at man uploader en fil med noget kode i og gør det eksekverbar. Dette kan potentielt udnyttes af en hacker til at overtage et website.
Avatar billede webweaver Praktikant
04. oktober 2007 - 12:19 #15
Har snakket med min host.

Ifølge dem skulle chmod være aktiveret, men ikke chown. (Hvad er det?)

Han anbefalede jeg prøvede først at resette filrettighederne på filerne, og så derefter kørte chmod.

Hvilken funktion skal bruges der?
Avatar billede nielle Nybegynder
04. oktober 2007 - 12:52 #16
chown() bruges til at ændre ejeren (change owner) af en fil. Hvis den var enablet kunne du i princippet uploade en fil i dit eget navn og som ændre den til at være ejet af root-brugeren (system administratoren). Dvs. du kunne snige kode ind som så ville se ude som den var en del af systemet.
Avatar billede webweaver Praktikant
04. oktober 2007 - 14:03 #17
Ahh okay på den måde.

Men hvad hedder funktionen i PHP som reset'er en fil, som supporteren snakkede om?
Avatar billede nielle Nybegynder
04. oktober 2007 - 16:13 #18
Jeg ved ikke hvad han mener - basalt set kan man ikke "resette" en fil. Mon det ikke bare skulle være nok at slette filen og så prøve forfra?
Avatar billede webweaver Praktikant
04. oktober 2007 - 16:57 #19
Han skriver man man resette filerne's rettigheder i PHP, han kan bare ikke huske hvad funktionen hedder. Men jeg ved nu heller ikke lige hvordan det skulle gøres.

Men det er jo ikke godt, hvordan kan jeg så løse det problem? Ifølge dem er chmod(); enabled, men det virker bare ikke. Om jeg prøver på en .php eller .txt fil gør ingen forskel, om jeg sletter dem og uploader dem igen, så nope.. Nada.
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:02 #20
Filernes rettigheder (re)sættes med ... ... chmod() !
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:04 #21
Prøv at sætte til 775 i stedet for 777.
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:04 #22
Måske endda 755
Avatar billede webweaver Praktikant
04. oktober 2007 - 17:19 #23
Stadig intet. Begriber det ikke. Man kan vel godt benytte sig af det inde i en mappe?
Avatar billede nielle Nybegynder
04. oktober 2007 - 17:22 #24
Nu foregår alt på en computer jo sådan set inde i en mappe ;^)

Var der noget specifikt du refererede til?
Avatar billede webweaver Praktikant
04. oktober 2007 - 17:23 #25
Det er self. rigtig nok, formulerede mig nok dårligt. Men chmod(); virker ikke kun i root folderen vel? ;)
Avatar billede nielle Nybegynder
04. oktober 2007 - 21:04 #26
Nej, den burde funere hvor som helst - dog skal dere være tilsvarende privilegiere på den mappe den køres i.
Avatar billede webweaver Praktikant
04. oktober 2007 - 21:19 #27
Jeg har chmod 705 på min root folder som standard.

Det burde vel også række til jeg kan ændre på filer og mapper i den?
Avatar billede nielle Nybegynder
04. oktober 2007 - 21:34 #28
Du må sikkert godt ... men dit script vil køre som brugeren "nobody" - det gør alle scripts som afvikles af webserveren.
Avatar billede webweaver Praktikant
04. oktober 2007 - 21:48 #29
Okay nu ved jeg slet ikke om det er muligt at ændre root folderen's rettigheder hos Surftown, men er der nogen speciel rettighed man bør give den? 755 eller noget?
Avatar billede nielle Nybegynder
04. oktober 2007 - 22:01 #30
Nej ... næppe root-folderen. Ja, 755 plejer at være en udemærket værdi.
Avatar billede nielle Nybegynder
05. oktober 2007 - 06:53 #31
Et lille eksperiment du kunne prøve.

Lav et script som opretter en lille fil (samme sted hvor scriptet køre), og så efterfølgende ændre privilegier på den. Prøbv så at gå på via FTP og tjek privilegierne.
Avatar billede webweaver Praktikant
05. oktober 2007 - 15:29 #32
Hvordan opretter man da en fil med PHP?
Avatar billede nielle Nybegynder
05. oktober 2007 - 16:54 #33
Det gør man f.eks. med fwrite() og dens søskene:

http://dk2.php.net/fwrite
Avatar billede webweaver Praktikant
09. oktober 2007 - 20:06 #34
Umiddelbart så vidt jeg kan se, bruges disse funktioner kun til at læse, skrive og åbne en fil fx.. Synes ikke jeg kan se noget omkring en som opretter dem?
Avatar billede nielle Nybegynder
09. oktober 2007 - 20:10 #35
Filen bliver oprettet af fopen():

http://dk2.php.net/manual/da/function.fopen.php

Det er dennes argumnent nr. 2 som bestemmer hvordan dette helt præcist skal ske.
Avatar billede webweaver Praktikant
13. oktober 2007 - 12:26 #36
Umiddelbart kan jeg stadig ikke få det til at fungere.

Jeg skriver således;

<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, 'X')) {
        echo "Cannot open file ($filename)";
        exit;
    }

    // Write $somecontent to our opened file.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($handle);

?>

Men den udskriver bare "Cannot open file (text.txt) .... Og filen bliver ikke oprettet.

Er der fejl i scriptet?
Avatar billede webweaver Praktikant
13. oktober 2007 - 12:31 #37
Hmm har snakket med en mere server 'minded' mand fra Surftown, og han fortæller faktisk er det er deres serveropsætning som gør chmod(); ikke kan anvendes. Han skriver at de har safe-mode sat til on, og dermed man kan ikke bruge chmod(); på filer med et andet uid, hvilket betyder at man kun kan bruge funktionen på filer ownet af httpd ... F. eks. filer uploaded igennem et PHP script.

Satans.. Så er der vidst ikke så meget at gøre mere, udover at acceptere jeg ikke kan lave et fuld-automatisk system?
Avatar billede nielle Nybegynder
14. oktober 2007 - 18:55 #38
Hvis de har lukket af for at man kan bruge chmod(), så er der ikke noget alternativ du kan bruge til at omgå den beskyttelse.

Ikke at jeg vil anbefale det, men du kan opså uploade PHP kode og lægge det i en database. Derefter kan du bruge eval() til at afvikle den. Dette ville stort set svare til at du kunne lægge PHP-filer op og afvikle dem.

PS: Det skal være et lille 'x' - ikke et stort.
Avatar billede webweaver Praktikant
14. oktober 2007 - 19:49 #39
Tjaa.. Det lukker den åbenbart automatisk af for, når man kører med safe_mode til on. Er da ret ærgerligt. Hmm øv.. Nå intet at gøre der..

Bare smid et svar, og få dine point alligevel :) Du har hjulpet godt til (:

Mvh. Lasse Jensen
Avatar billede nielle Nybegynder
15. oktober 2007 - 08:11 #40
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester