09. juli 2001 - 12:23Der er
25 kommentarer og 1 løsning
open_basedir vs. php browser-upload!
Kun for eksperter! ------------------
Jeg har lavet et script til at uploade filer til min hjemmeside fra et browser-vindue.
Scriptet fungerer således at når filen er blevet uploadet til serveren, læser det indholdet af filen fra dens upload_tmp placering og skriver indholdet ind i en database.
Dette fungerer fint på min egen hjemmeserver, på diverse gratis-servere på internettet. MEN: på det webhotel som jeg har købt har de alt for god sikkerhed. For når jeg har uploaded en fil med mit script, og scriptet når til det punkt hvor det skal læse den uploadede fil fra dens upload_tmp placering, kommer der følgende fejl:
Warning: open_basedir restriction in effect. File is in wrong directory.
Mit open_basedir er mit webside-bibliotek, eks. på serveren /home/user/httpdocs/* Alt hvad der ligger uden for dette bibliotek kan jeg ikke tilgå. Med det resultat at den fil jeg har uploadet gennem min browser, som php automatisk ligger på en temp-placering i dette tilfælde /tmp/fil ikke kan tilgås pga. mit open_basedir!
Jeg kan umiddelbart ikke kopiere eller læse fra /tmp/fil Og heller ikke chmod\'e noget som helst.
Serveren: linux, apache, php4
SPØRGSMÅL: ------------ Så er det mit spørgsmål lyder:
1. Er der nogen der har erfaring med hvordan man tilgår uploadede filer fra deres temp-placering uden at støde ind i en open_basedir restriction?
2. Er der nogen der kender (ja, kender - og IKKE gætter!) en løsning på mit problem. Her stiler jeg efter en løsning som webhotel udbyderen ikke skal til at installere/konfigurere, men jeg selv kan implementere i mit script (så vidt det altså er muligt.)
Hmm, i php manualen står der at open_basedir kun restricter når man prøver at åbne en fil udenfor med fopen eller gzopen. Men når jeg så prøber at move_uploaded_file eller copy, så får jeg permission denied.
Det er vel fordi der er den forkerte chmod på destinationen, men den har jeg prøvet at ændre mange gange, men alt hvad jeg forsøger at chmod\'e det får jeg også at vide jeg ikke kan.
Mit dir har følgende brugerrettigheder: drwxr-xr-x minbruger pleskcln 4096 Jul 8 19:12 httpdocs
Nej, det er ikke dit katalog der er noget i vejen med, men derimod kan det være /tmp kataloget, der har forkerte tilladelser.
Tjah, jeg tager nu ikke folk alvorligt, der bare \"smider om sig med point\". Et svært spørgsmål sættes til 60 p. Overholder du det, bliver du taget mere alvorligt. Med mange point kommer der bare en masse ligegyldige savr.
Hmmmm. Jeg fik lige en idé, jeg har ikke den fjerneste anelse om hvordan det skal se ud: Er det muligt at fange en fileupload med noget stdin eller HTTP_RAW_POST_DATA sjov?
Således man slipper for at skulle læse fra disken overhovedet?
Så de lukker for noget i PHP, men tillader udførelse af systemkommandoer. Ha ha, du skal vist alligevel ikke fortælle navnet på det webhotel!
Hvad laver du med cat - den har intet problem med \"binære filer\", som er et ukendt begreb i Unix (alt ér binære filer). Kan du vise koden, kan vi vel lave et hack.
Linieskift i tekstfiler fungerer ikke, og billeder de kraller fuldstændigt af. Men ihvertfald så skal denne her funktion blot ende op med at gøre det samme som $data = addsl... listet ovenfor.
Ok - du kører da på en unix-lignende tingest, ikke? Den der \"rb\" er kun nødvendig under Windows (men skader ikke ...)
Jeg tror du skal kopiere til en fil hos dig selv, og så læse den derfra, altså
\"cat $userfile /home/ditegetkatalog/upload/fil\"
f.eks. Så kan du åbne den med fopen - formentlig. Det er spændende det her.... Men vær opmærksom på at dit webhotel kan finde på at lukke muligheden for dette, hvis de nu tager sikkerhed alvorligt.
Hej du Karlsen, kan du ikke lægge kode stumpen op så jeg kan se hvordan tricket bliver udført... Læser du filerne ind i en sql database?
Synes godt om
Ny brugerNybegynder
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.