[ geenije @ 27.06.2015. 14:59 ] @
Želim da mi PHP web aplikacija upisuje nešto u neke fajlove van particije gde mi je apache zbog prostora na disku. Korisitim CentOS 5.5 mašinu.

Kreirao sam alias i directory direktive u httpd.conf, naravno restartovao proces ali aplikacija ne može da kreira fajl. U apache error_log nema ništa novo.

Alias radi pošto kada ručno kreiram fajl i napravim u aplikaciji hyperlink do njega, aplikacija ga otvara, problem je znači pisanje u folder.

Podesio sam prava pristupa tom folderu na 777 čak sam menjao i user/group i stavio apache/apache i ništa. Kada treba da kreira fajl bilo gde unutar "home" lokacije i poddirektorijumima za Apache, nema nikakvih problema.
Pošto je apache user takav da ne može na sistem da se loguje kao on, napravio sam poseban user i dodelio prava folderu, promenio u httpd.conf da se predstavlja kao taj user i džaba.

U aplikaciji fajlove kreiram sa file_put_contents("files/".$host, $result); i to radi u okviru /var/www/html/files ali ne radi u /var/opt/files.

Alias files/ "/var/opt/files/"

<Directory "/var/opt/files">
Order allow,deny
Allow from all
</Directory>

[Ovu poruku je menjao geenije dana 27.06.2015. u 18:47 GMT+1]

[Ovu poruku je menjao geenije dana 27.06.2015. u 18:48 GMT+1]
[ agvozden @ 28.06.2015. 11:27 ] @
apache ne upisuje fajlove, vec to radi php - dakle, promasio si forum. Ovo treba da ide u PHP forume.

Da bi php upisao, osnovna je permisija. Posto se radi o putanji van glavne, onda php mora da ima permisiju i do te putanje. A to se ne odnosi samo na ciljani folder, vec na putanju. Ne mora cela putanja da ima 'w', ali ukoliko nema 'r' ili 'x' onda tu nastaje prekid.

Druga stvar je da li ti je dobro generisana putanja u php-u? Moraces da setujes neki log i pratis sta se desava, gde on uopste snima te fajlove.

Pitanje - zasto upisujes fajlove van particije i koji su to fajlovi (izvrsni ili staticki materijal)?
Da li si pokusao da koristis home folder, ili da promenis putanju cele aplikacije u http.conf?

[ geenije @ 28.06.2015. 13:07 ] @
Hvala za savet i izdvojeno vreme :)

Tačno je da PHP upisuje fajlove, ali preko Apache, tačnije kreiran fajl ima user/group=apache/apache. Nemam problem da kreiram fajl, znači nemam problem sa PHP, imam problem da kreiram van Apache root foldera (/var/www/html), zato sam se okrenuo rešavanju problema prava upisa kao apache user u /var/opt/files.

Cela putanja ima sva potrebna prava:

noc:~# ls -ld /var
drwxrwxr-x 25 root root 4096 Mar 2 14:03 /var
noc:~# ls -ld /var/opt/
drwxr-xr-x 10 root root 4096 Jun 7 21:26 /var/opt/
noc:~# ls -ld /var/opt/files/
drwxrwxrwx 2 apache apache 6 Mar 19 22:02 /var/opt/files/

Putanja se ne generiše već je statički upisana. To je folder files/ime_fajla i to sve radi kada je files u folderu gde je aplikacija (/var/www/html/ip/backup/files).

Putanju promenim koristeći alias u httpd.conf i kada ručno kreiram tamo fajl i napravim testni hyperlink na stranici kao files/ime_fajla, on tačno povuče ime_fajla koristeći alias putanju (files/ime_fajla -> /var/opt/files/ime_fajla), znači alias tj putanja radi ali samo za čitanje.

Fajlove upisujem van particije zato što su diskovi nesrećno podeljeni tako da tu gde je apache root imam nekoliko giga, a na /var/opt imam oko 300 giga, aplikacija mi između ostalog radi backup svih rutera u mreži, to su veliki tekstualni fajlovi a i ima puno rutera, plus želim da to radi svaki dan, a pored toga imam i deo koji je "baza znanja", kombinacija mysql i fajlova, naime korisnik može da doda u bazu neko uputstvo i da uz njega uploaduje fajlove koji mogu biti .doc, .xls, .pdf itd. a polako ih se nakuplja previše za tih nekoliko giga.
[ agvozden @ 28.06.2015. 13:45 ] @
ove permisije su OK, pod uslovom da ti apache izvsava procese kao apache, a php je konfigurisan kao apache module.
Ako je cgi to je druga prica.
Uglavnom apache radi kao www-data user, bez shel-a. Zato me buni kako si rucno kreirao link.
Moj je predlog bio da izmestis celu aplikaciju u taj folder.

Ukoliko radis ovako, kombinovano, moja je pretpostavka da, ili ti putanja nije kako treba, ili je problem sa korisnicima.
Proveri koji korisnik izvrsava apache i php.
[ Rembrant @ 28.06.2015. 19:50 ] @
Mene interesuje da li ti je ukljucen SELinux? Ako jeste da li bi samo probao da ga iskljucis i probas. Posle mozes da popravis permisije ako je SELinux u pitanju.
[ nkrgovic @ 28.06.2015. 20:40 ] @
Kako ti je podeseno:

<Directory....>
allow, deny...

Znas vec na sta mislim - da li taj dir ima pravo da se koristi unutar samo apache-ja? Vodi racuna da podesis i za fizicki dir, ne samo za symlink. I proveri da li je, pored, allow/deny u Option stavljen FollowSyLinks

Pisem sa mora, na odmoru sam, pa da ne jurim dokumentaciju za tacnu sintaksu, imas je u httpd.conf.
[ agvozden @ 28.06.2015. 23:14 ] @
@offtopic
Ako pisem srpski koristim iskljucivo cirilicu! A to ovde nije moguce.
posto je ovo tehnicki forum, ovde se 'prica' nekim tehnickim jezikom, osisanom latinicom.
inace, ne bi bili ni folderi, niti fajlovi...
[ plus_minus @ 29.06.2015. 01:24 ] @
Misliš na direktorijume i dokumente (digitalne, (to je virtuelna vrsta koja `živi` dok ima struje) podrazumeva se) ... ?
Elem, kad si toliko principijelan, potrudi se onda oko latiničnih kukica i kvačica.
U can do it.
[ geenije @ 29.06.2015. 22:54 ] @
Rešio sam problem bežeći od njega :)

Prebacio sam da mi Document root bude umesto u /var/www/html u /var/opt/html i sad sve radi.

Ono što me začudilo doduše je činjenica da nakon što sam kopirao celu aplikaciju i nakon što je automatski cela putanja /var/opt/html postala vlasništvo usera i grupe root sa pravima 755, aplikacija je i dalje modifikovala postojeće log fajlove, ali nije mogla da kreira nove.

Kada sam promenio user/group da budu apache/apache na /var/opt/html rekurzivno, mogla je i da kreira fajlove (očekivano).

Hvala svima na pomoći :)
[ nkrgovic @ 30.06.2015. 22:30 ] @
Ja ti kazem proveri <Directory> tagove.
[ geenije @ 01.07.2015. 11:32 ] @
Već sam navodio šta sam upisivao u httpd.conf i da je čitanje radilo a pisanje nije.

Sada je promenjen Document root i naravno Directory tag i više nisu /var/www/html već /var/opt/html.