Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: chmod() ei toimi oikein

Sivun loppuun

Opera [15.04.2010 16:09:13]

#

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.

Metabolix [15.04.2010 16:13:24]

#

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.

Opera [15.04.2010 16:55:29]

#

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?

pistemies [15.04.2010 17:00:14]

#

Onko oikeasti kyse Windowsin Server-versiosta vai esim. XP:hen asennetusta Apachesta?

Opera [15.04.2010 17:04:19]

#

Tarkoitan asennettua Apachea.

Käytän itse asiassa tälläistä pakettia, jos se auttaa:
http://vertrigo.sourceforge.net/

Metabolix [15.04.2010 17:05:41]

#

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.

pistemies [15.04.2010 20:54:20]

#

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.

Macro [17.04.2010 12:41:58]

#

Opera: Jos sinulla on Windows palvelin, niin chmodit eivät ole käytössä. Ne ovat vain Linuxeilla tms. Vai?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta