Morjens
Alkuun, että safe mode on poissa päältä.
Minulla olisi pientä ongelmaa chmod() funktion kanssa. Tein testiksi tälläisen pienen koodipätkän:
<?php $file = "tiedostoni.txt"; if(file_exists($file)) { $try = chmod($file, 0600); if($try) { echo "OK"; } else { echo "Fail"; } } else { echo "File not found"; } echo "Perms: ".substr(sprintf("%o", fileperms($file)), -4); # suoraan PHP:n fileperms() ohjeesta ?>
Koodissa siis "chmodataan" tiedosto 0600 modelle ja tarkistataan heti perään mikä on sen mode. Chmod onnistuu aina, mutta jostain syystä tämä ilmoittaa tiedoston modeiksi AINA 0666 tai 0444.
Jos yritän vaihtaa modeksi 0777, 0666 tai 0600, tuloksena on 0666 mode. Jos yritän vaihtaa modeksi vaikka 0400, tuloksena on 0444.
Mikä siis voisi olla syynä tälle? Kiitos vastauksista.
Esimerkiksi FAT-tiedostojärjestelmässä tiedostolla ei ole erikseen omistajaa, minkä vuoksi kaikki kolme numeroa tulevat aina samoiksi, eikä se myöskään tue muita oikeusmerkintöjä kuin yksittäistä readonly-merkintää, minkä vuoksi ainoat mahdolliset tilat ovat 4 (readonly) ja 6 (read-write). Windows-palvelimella (toki teoriassa muillakin) vika voi hyvinkin olla tässä.
Vastaavanlainen käytös on mahdollista säätää myös muihin tiedostojärjestelmiin, jolloin taas vikaa pitää etsiä palvelimen asetuksista.
Käytössä on NTFS-tiedostojärjestelmä ja Windows-palvelin. Vika voisi siis olla palvelimen asetuksissa? Mitään vinkkejä, mikä voisi aiheuttaa tämän asetuksissa?
Onko oikeasti kyse Windowsin Server-versiosta vai esim. XP:hen asennetusta Apachesta?
Tarkoitan asennettua Apachea.
Käytän itse asiassa tälläistä pakettia, jos se auttaa:
http://vertrigo.sourceforge.net/
En erityisesti tiedä NTFS:n toiminnasta PHP:n kanssa, mutta siinäkään oikeudet eivät toimi perinteisellä UNIX-tyylillä, joten samantapainen vika saattaa yhä olla. Myös pikainen Googletus antoi ymmärtää, että Windowsissa chmodin toiminta rajoittuu noihin kahteen tilaan.
Palvelimen asetuksilla en tarkoittanut Apachen tai PHP:n asetuksia vaan käyttöjärjestelmän (Linuxin) asetuksia. Windowsissa tuollaisten asioiden säätäminen ei luultavasti olisi mitenkään mahdollista.
Minulla aikoinaan oli windowsissa apassi (nykyisin käytän Ubuntu Linuxia). Ei minun tarvinnut koskaan erikseen asettaa tiedostoon chmod oikeuksia. Esikerkiksi fopen funktiolla pystyi luomaan tiedostoja ja kirjoittamaan niihin pelkkää "a" -moodia käyttämällä. Yleisesti käytetyssä UNIX-systeemissä pitää käyttää "w" -moodia, "a"-moodi aiheuttaa virheilmoituksen, että tiedostoa x.txt ei löydy.
Opera: Jos sinulla on Windows palvelin, niin chmodit eivät ole käytössä. Ne ovat vain Linuxeilla tms. Vai?
Aihe on jo aika vanha, joten et voi enää vastata siihen.