fájl létrehozása (Megoldva)

Szasztok!

Permission denied.

Próbáltam létrehozni egy fájl touch() függvénnyel, de a fenti hibaüzenettel tért vissza a php.
hogyan oldahtom meg ezt a problémát? hogyan adhatok magamnak jogosultságot hozzá? root-ként futtatom.

Az Apachot és a PHP-t egyébként forrásból forítottam.

UHU 2.0

Thx.

MysteryKe.

Hozzászólások

csúnyaként futtatsz webszerveren futo szkriptet?
vagy az apache fut rootként?

Fujj.

Szóval azt mondod, hogy a touch('filenév') FALSE-sal tér vissza.
Nézzed meg a tényleges usert, akinek a jogaival fut a script: $1 = get_current_user()
Illetve nézd meg, hogy melyik konyvtarba akarsz irni: $2 = getcwd(), majd nezd meg, hogy a $1 usernek van-e ÍrásI joga a $2-be.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

megnéztem ezzel a 2 függvénnyel
root-ként fut és a könyvtár amibe írni akarok az: /www/htdocs/dispo

szal hogyan lehet megoldani a problémát?

Érdekes, hogy a root nem tud oda írni.
A könyvtár jogai?
Konzolból oda tudsz touch teszt.txt -zni?

Ezenkívül:
$handle = fopen("c:\\data\\info.txt", "w+");

Ha ez is faszkodik, akkor
http://hu.php.net/manual/en/function.is-writable.php
ezt nézd meg. De tuti nem root-ként fut az az apache...
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

valaki nézzen már ide is, mert holnapra meg kell csinálnom ezt a melót.

thx.

valaki! hahó! már tegnapra készen kellett volna lennem ezzel a melóval!! pleaseeeee!

safe_mode = Off
@ php.ini
(phpinfo())

vagy

Probáld a külső touch al, /bin/touch

Más könyvtárba sem enged ?

Nézd. Akár root-ként futtatsz webszervert, akár nem, ha egy egyszerű jogosultsági problémával a HUP-ra szaladsz, akkor az nem munka, amit végzel, hanem kontárkodás. Az ilyen infohuszárok, mint Te, rontják az informatikai piacot itthon, és közvetett módon lenyomják az olyan emberek fizetését, akik értenek is a szakmájukhoz. Ezért szeretnélek megkérni arra, hogy ilyen probléma esetén ne "valaki", ne "halihó", ne "tegnapra", hanem menj haza tanulni.

Már bocsi, de asszem ez ember gyakorlatban tanulhat csak meg igazán valamit. azzal, hogy órák hosszat ülök otthon a gép előtt, és tanulok esetleg olyan dolgokat, amiket lehet hogy nem is fogok használni, azzal csak azt érem el, hogy a fontosabb dolgokra nem fogok tudni kellő figyelmet fordítani és így a büdös életben nem fogok rendesen megtanulni valamit. egyébként már régóta php-zgatok és régebben összeraktam otthon egy ütött kopott gépet szervernek, melyen még SuSE 6.4 futott és külön-külön kellett fordítanom rá az Apachot, a PHP-t meg a MySQL-t. Akkor a fájlfeltöltés és létrehozás működött rendesen, csak most ütköztem ebbe a hibába. (Azóta nem kellett a fájlfeltöltéssel foglalkoznom, mellesleg az EasyPHP-s cuccal ez működött rendesen). Egy ismerős mondta (akinek mellesleg programozó cége van), hogy válalljak el mindent, csak tudjam, hogy ha esetleges új ismeretre kell szert tennem, tudjam melyik könyvet vegyem le a polcról. Csak a PHP-s könyv ezzel a résszel nem foglalkozott. Egyébként köszi a jóindulatodat. THX.

Nem haragszom. Csak egy rövid kitérő az eredeti problémával kapcsolatban:

Az Apache jellemzően root-ként indul, hogy néhány, superuser privilégiumot igénylő műveletet végre tudjon hajtani (pl. 1024 alatti portok bindelése). Ezután, ha nincs elszexuálva a konfiguráció, eldobja ezt a privilégiumot, és egy gyakorlatilag nulla jogosultsággal rendelkező felhasználóként folytatja működését (lásd: User és Group direktívák). Ahhoz, hogy egy PHP szkript fájlműveleteket végezhessen, ennek a felhasználónak kell jogosultságokat biztosítani a kérdéses fájlokra. Ezt UNIX alatt többféleképpen el lehet érni.

1) Létezik a béna megoldás, amikor az Apache user tulajdonába kerülnek a fájlok - ez biztonsági szempontból a lehető legrosszabb.
2) Létre lehet hozni egy csoportot az adott projekt fájlműveleteinek megvalósítására, ehhez hozzá lehet adni az Apache user-t és be lehet állítani a fájl jogosultságait a csoportra.
3) Be lehet állítani a 3x3-as jogosultságrendszer 'others' szereplőjének jogait.
4) Lehet wrapper-t készíteni, ami csak meghatározott fájlműveleteket engedélyez, ez lehet setuid-os
5) Lehet ACL-eket is használni
6) ...

Ha Neked semmi másra nincs szükséged, mint hogy a touch működjön, az 1 sor:
# chmod -R 777 /www/htdocs
Állítom, hogy minimális UNIX-os felhasználói ismeretek birtokában ezt tudhatnád - láthatólag ez Nálad hiányzik. A jelek szerint nem tudod, hogy melyik könyvet kell levenni a polcról. Véleményem szerint a hűbelebalázs viselkedésed egy olyan megoldást fog eredményezni, ami, még ha működik is, az egyéb körülményeket (pl. biztonsági megfontolásokat) figyelembe véve nem lesz optimális. Ez, tekintve, hogy a webes alkalmazások talán a legtöbb oldalról sebezhető informatikai megoldások, kritikán aluli termékhez vezet. Ugyanakkor felteszem, hogy nem dolgozol kifejezetten drágán, mi több, a profi programozók áránál jóval jutányosabban végzel munkát. Ezzel a cselekedeteddel az amúgy is szűk hazai piacon ellehetetleníted azoknak a megélhetését, akik Nálad jóval több tapasztalattal rendelkeznek.

Ezért állítom, hogy kártékony vagy az informatikus társadalomra nézve. Félre ne érts, nem azt akarom mondani, hogy ne kérdezz. Tanulni csak úgy lehet, ha az ember nála többet tudóktól kérdez. Csak nem illik azért pénzt kérni, amit valójában nem tudsz. Nem értek egyet a programozó ismerősöddel, hogy bármit el kell vállalni. Szerintem jobban járnál, ha beiratkoznál egy felsőoktatási intézménybe.

köszi turul16, mindjárt kipróbálom.

Warning: copy(csatolmanyok/be): failed to open stream: Permission denied in /www/htdocs/dispo/feltolt.php on line 11
Nem sikerült másolni!!!!!!!

A feltolt.php fájl tartalma:
----------------------------
----------------------------

<?php
$feltoltes_konyvtar = "/www/htdocs/dispo/csatolmanyok";
$fajl = $_FILES['userfile'];
$dir = "csatolmanyok/";

print("Fájl: $fajl
");

if (isset ($fajl))
{
copy($_FILES['userfile']['tmp_name'], $dir.$_FILES['userfile']['name']) or die("Nem sikerült másolni!!!!!!!");
include("mysql.php");

}
else
{
print("Nem létezik a fájl!!!");
}
?>

és ugyanez van sime touch("valami_fajl.txt") -vel is.

Pedig a php.ini-ben átállítottam a safe_mod=On -ra.

Köszi, a chmod -R 777 ... megoldotta a problémámat.