29. august 2002 - 11:47
Der er
24 kommentarer
Kan man få PHP til at redigere .htaccess?
Hej! Er der nogen, der ved, om det er muligt at få noget PHP til at tilføje noget i .htaccess filen? Hilsen Kristian W. Jakobsen ICQ: 31707979 MSN Messenger: kwj47@hotmail.com Mail:kristianw@kristianw.dk
Annonceindlæg fra Infor
29. august 2002 - 11:49
#1
lytter lige med
29. august 2002 - 12:49
#2
Kom evt med et eksempel på hvad der skal laves...
29. august 2002 - 14:16
#4
Jeg har prøvet på at få PHP til at åbne filen på den normale måde, men jeg kan ikke få det til at virke. Det jeg skal lave er, sådan at hver gang jeg uploader en fil (via en php side), skal php skrive til .htaccess, hvem der skal have adgang til den.
29. august 2002 - 14:58
#5
"det kunne jeg ikke få til at virke" Hmmm.. Min brødrister virker ikke..... Hvad med at beskrive hvilken fejl scriptet giver når du forsøger?
29. august 2002 - 15:02
#6
Der kommer ingen fejl eller noget som helst. Filen bliver bare ikke ændret... Brødristeren virker ikke og der kommer ingen røg op og strømmen er tilsluttet...
29. august 2002 - 15:06
#7
er du sikker på at du har sat de rette permissions til at ændre i filen? (chmod)
29. august 2002 - 15:12
#8
Jeg har læst et sted, at den skal stå til 766 ?
29. august 2002 - 15:14
#9
og du åbner filen på den rigtige måde (hvor du kan skrive til filen) og du skriver rigtigt til filen? kom evt. med noget kode her så vi har noget at se på
29. august 2002 - 15:17
#10
Jeg har lavet noget, der skriver til htpasswd på præcis samme måde, så det skal virke... $fp = fopen(".htaccess", "w"); fputs($fp, "Tekst der skal indsættes"); fclose($fp);
29. august 2002 - 15:20
#11
og du er sikker på at henvisningen til filen er den rigtige? Prøv at indtaste den absolutte sti til filen /var/www/domæne/folder/ osv
29. august 2002 - 15:23
#12
Jeg har indtastet den absolutte sti og den er helt sikkert rigtig.
29. august 2002 - 15:26
#13
i stedet for w prøv da at skrive a+
29. august 2002 - 15:37
#14
Det giver det samme...
29. august 2002 - 15:57
#15
hvis det er på din egen server, så kan du evt. i php.ini få alle fejl skrevet ud, så har du da noget mere at gå ud fra.
29. august 2002 - 15:58
#16
Det er det ikke, men jeg kan jo prøve at lave det på min egen server...
29. august 2002 - 16:20
#17
Prøv denne kode i en fil for sig selv: $data = file(".htaccess"); foreach ($data as $line) { echo "{$line}<br>\n"; } Du skulle gerne se indholdet af din .htaccess fil når det er kørt. Jeg kunne forstille mig, at man af sikkerhedsmessige årsager forhindre at du kan åbne filer uden for det dir scriptet er i (og vidst nok underdirs) og eller at man forhindre at .htaccess filer kan åbnes af PHP.
29. august 2002 - 17:04
#18
Den kan sagtens vise indholdet, men den vil ikke skrive til filen - heller ikke, hvis PHP filen ligger i samme dir
29. august 2002 - 17:58
#19
Hvad er rettighederne på filen? Skal være 606 eller 666 brugeren som webserveren køres som skal ha' rettigheder til at skrive til filen. I dit FTP program skal der stå noget i stil med -rw-rw-rw .htaccess eller -rw----rw .htaccess
30. august 2002 - 08:51
#20
Hvis opsætningen af PHP er "lidt stram" er det straks sværere/umuligt at få lov til div. "lyster". .htaccess er jo pr. default beskytttet, og på min windows får jeg ikke mulighed for f.eks. at opdatere en passwordfil med htpasswd, netop på grund af opsætningen i php.ini. Men du kan jo bare skrive Require valid-user i din .htaccess
30. august 2002 - 09:00
#21
Det hjælper mig overhovedet ikke at skrive require valid-user for jeg skal give forskellige brugere rettigheder til at se de forskellige filer. Rettighederne skal først tildeles idet jeg uploader filen via en PHP side...
20. oktober 2004 - 21:48
#22
Dette dels hjemmelavede og dels "huggede" script klarer det for mig. Det skal ligge i den mappe der skal beskyttes <? //Make .htaccess og .htpasswd $htaccess=".htaccess"; $path_parts = pathinfo($SCRIPT_FILENAME); $htpasswd = $path_parts["dirname"]."/.htpasswd"; function htpasswd($user) { global $htpasswd; $file=fopen($htpasswd,"a+"); fputs($file,$user."\n"); fclose($file); } function htaccess() { global $htaccess; global $htpasswd; $t = <<<HTAEOF AuthUserFile $htpasswd AuthGroupFile /dev/null AuthName "Enter Pass" AuthType Basic <Limit GET> require valid-user </Limit> HTAEOF; if( $file=fopen($htaccess,"w+") ) { fputs($file,$t); fclose($file); } else { echo "hmmm"; } } function genSalt () { $random = 0; $rand64 = ""; $salt = ""; $random=rand(); // Seeded via initialize() // Crypt(3) can only handle A-Z a-z ./ $rand64= "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $salt=substr($rand64,$random % 64,1).substr($rand64,($random/64) % 64,1); $salt=substr($salt,0,2); // Just in case return($salt); } function cryptPass ($passwd, $salt = "") { if (!empty($salt)) { $salt = substr ($salt, 0, 2); } else { $salt = genSalt(); } return (crypt($passwd, $salt)); } // end cryptPass echo " <form action='$PHP_SELF' method='post'> <table> <tr> <td>Brugernavn:</td><td><input name='bruger' value='$bruger'></td> </tr> <tr> <td>Password:</td><td><input name='pw' value='$pw'></td> </tr> <tr> <tr> <td>Prompt:</td><td><input name='prompt' value='$prompt'></td> </tr> <tr> <tr> <td><input type='submit' name='doit' value='Kryptér'></td><td></td> </tr> </table> </form> "; if( isset( $doit ) && $bruger != "" && $pw != "" ) { $krypt = cryptPass($pw); htaccess(); htpasswd("$bruger:$krypt"); unset( $doit ); } ?>
20. oktober 2004 - 21:49
#23
vil lige tilføje at rettihederne (chmod) skal være 777 for at man kan redigere i dem (write access)
20. oktober 2004 - 21:49
#24
hehe - gaaaammmelt indlæg jo :-)
Vi tilbyder markedets bedste kurser inden for webudvikling