Onko kukaan saanut ratkaistua tämöistä ongelmaa:
Luon hakemiston mkdir-funktiolla ja chodaan sen 777, mutta vaikka FTP-ohjelmalla hakemiston oikeudet näyttää olevan oikein, se on kuitenkin vajaa, koska siihen ei voi uploadata tai copyoida tiedostoja. Miten sitä pitää säätää, että toimii?
Koodi on näin yksinkertainen:
Huom: Toimii PHP:n windows-veriossa oikein mutta ei minun int2000-palvelimella
Vaihda palveluntarjoajaa tai ohjelmointikieltä, esim. PERLiin.
Löysin tuommoisen lyhyen javascript-pätkän. Mutta on tuo js sen verran heikompi minulla, että miten tätä javascriptiä täytyy käyttää, että toimii?
public boolean mkdir()
No käyttäjäpuolen Javaskriptillä et taatusti saa luotua hakemistoa palvelimelle, ja serveripuolen JS vaatii jo sitten jotain ihan muuta, kuin perus-Apachen ja PHP-tulkin.
ASP riittää, mutta miksi et käyttäisi PERLiä kun se jopa kuuluu int2000:n tukemiin ohjelmointikieliin. PHP ja safe mode kun ei todellakaan ole suunniteltu kansioiden/tiedostojen kanssa työskentelyyn.
Mietin tässä miten tuo kannattaisi toteuttaa. Teen ohjelmaa, joka menee laajaan käyttöön. Olisi hyvä tietää esim. semmoinen asia, toimiiko tämä mkdir+chmod muilla palvelimilla hyvin. Onko se vain int2000:n heikkous?
Voisiko joku vaikka testata miten se toimii mbnetissä ym. Tässä tällainen pikainen skripti, jolla asian voi testata eri palvelimilla:
<?php $testi_dir="testaus"; @mkdir("$testi_dir"); @chmod("$testi_dir",0777); $file=$testi_dir."/uusi.html"; touch("$file") or die("Ei oikeuksia hakemistoon <i>$testi_dir</i>!"); chmod("$file",0666) or die("Ei oikeuksia hakemistoon <i>$testi_dir</i>!"); echo "Uusi hakemisto ja tiedosto on luotu"; ?>
Minulla tuo ilmoittaa tämän tyyppisen virheen:
[edit]
touch(): SAFE MODE Restriction in effect. The script whose uid is 3716 is not allowed to access /www/int2000/X/XXXXX/html/testi/testaus owned by uid 99
[/edit]
Safe Mode taitaa olla päällä. Muistaakseni Mbnetissäkin se on päällä :/
Löysin tuollaisenkin funktion:
https://www.php.net/manual/en/function.umask.php
Millähän tavalla tuolla voi hakemistoja muokata? Ei ollut yhtään koodi-esimerkkiä.....
@ )
On niitä, ei vaan näy tällä hetkellä:
lainaus:
Some services are temporarily unavailable --
These include the documentation user notes (including their submission interface)
Valitettavasti en nyt muista mitä tuo tekee, mutta user notes sisälti siitä esimerkkejä, kunhan ko. palvelu saadaan taas pystyyn.
Sain ylläpidolta tällaisen selvennyksen virheeseen:
Virheilmoitus johtuu siitä, että scriptin omistajana on teidän käyttäjänne, kun taas testaus hakemiston omistajana on nobody. Virheilmoituksen ei pitäisi ilmetä kun scriptin sekä hakemiston omistajana on sama käyttäjä (joko nobody tai oma käyttäjätunnuksenne). Hakemiston omistajaksi tulee käyttäjä itse kun hakemisto luodaan FTP:llä.
Miten muutetaan tuo, että scriptin ja hakemiston omistaja olisi sama, esim. tuo nobody?
chown
Mikä tässä voisi vielä olla väärin?
<?php mkdir($uusi_hakemisto); chown($uusi_hakemisto, fileowner($_SERVER['SCRIPT_FILENAME'])); chmod($uusi_hakemisto,0777); ?>
Ilmoittaa edellisten lisäksi tällaista:
Warning: chown(): Operation not permitted in /www/int2000/X/XXXXX/html/testi/testaus
Sain tuon chown:n virheilmoituksen pois muuttamalla sitä näin:
mkdir($uusi_hakemisto); chown($uusi_hakemisto, fileowner($uusi_hakemisto)); chmod($uusi_hakemisto,0777);
Mutta edelleen tämä ei toimi, ilmoittaa samat virheet kuin ennen tätä chown-skriptiäkin.
Eipä tuo chown tunnu toimivan. Johdonmukisesti se pitäisi olla suunnilleen näin
Fileowner ei kuitenkaan huoli siihen mitään. (Jos sitäkään).
Onko tuo fileowner sopiva nykyisiin PHP-versiohin tuollaisena, vai onko se PHP 5.0 versiossa toimiva? Pitäisikö sille olla erillinen funktio? Ja onko sellaisia saatavilla?
Edit: Olikohan olemassa jotakin funktiota, jolla voi lukea hakemiston käyttöoikeudet/omistajan?
Edit 2: Samoin on tuo chown. Tässä uusin testi:
mkdir($uusi_hakemisto,0777); chmod($uusi_hakemisto,0777); fileowner($uusi_hakemisto); chown($uusi_hakemisto,$ftp_tunnus);
Se ilmoittaa tällaisen virheen:
testi.php kirjoitti:
Warning: chown(): Operation not permitted in /www/int2000/X/XXXXX/html/testi/testi.php on line 33
ideoita?
Onko?
Yleensä chown käyttö on sallittu vain rootille. Oletko ihan varma että haluat edes vaihtaa omistajaa?
Minun tapauksessa ainut keino jolla tuota PHP:n luomaa hakemistoa voi käyttää, on muuttaa hakemiston omistajaa.
Ajv:lla oli tuolla toimiva systeemi:
http://cgi.evtek.fi/~k0101030/testikansio2/
Mitähän käyttöjärjestelmää hän mahtaa käyttää, onko mahdollisesti käytössä windows, kun voi surutta luoda hakemiston ja uploadta sinne tiedostoja....
Ihan linukka tuolla on pohjalla. Palvelimella sattuu vain olemaan php:ssä safe_mode = off :P
Voiko mitenkään muuten vaikuttaa .htaccess tiedostolla niihin funktioihin, joita ei safe_modessa ole kielletty?
Int2000:ssa chown kuuluu sallittuihin, samoin muut funktiot, joita tuossa yhteydessä käytetään.
Kielletyt ovat seuraavat:
int2000.net kirjoitti:
PHP:n safe moden käyttöönoton yhteydessä seuraavien funktioiden käyttö estetään: dl, shell_exec, exec, system, passthru, popen, set_time_limit, phpinfo, putenv
Aihe on jo aika vanha, joten et voi enää vastata siihen.