Autor Zpráva
sedgar
Profil *
Zdravím,
Mám takýto problém:
- potrebujem na serveri vytvoriť súbor a následne ho editovať (je to php graf, ktorý generujem podľa dát z DB)
- problém je v tom, že keď ho vytvorím, tak mu funkciami chmod, chgrp, chown už nezmením práva a súbor je nepoužiteľný (nedá sa zobraziť ani editovať)
- chmod môžem nastaviť cez ftp_chmod, to však môj problém nevyrieši. potrebujem zmeniť aj UID, GID (509)

Doteraz som prišiel len na jedno nevyhovujúce riešenie:
- vytvoriť súbor na localhoste a následne ho uploadnuť cez tcm. Potom je UID i GID správne (508), stačí zmeniť chmod a všetko funguje ako má...

pls. viete ako priamo z kódu php zmením UID, GID? alebo sa mám obrátiť na technickú podporu?

Ďakujem.
Joker
Profil
chown() a chgrp()

...řekl bych.

edit- tak nic, přehlédl jsem, že už se zmiňují v otázce.

A jak se ten soubor vytváří?
sedgar
Profil *
Joker: veď píšem že tie funkcie mi neprejdú.
Akoby som nemal k práve vytvorenému súboru na serveri práva, proste sa nič nenastaví - nejde chmod(), chgrp(), ani chown().
Jediné čo sa mi podarilo je zmeniť chmod a to len pomocou ftp_chmod().
sedgar
Profil *
$cesta = 'graph/graph.php';
$cestaNew = 'graph/graph'.$idGraph.'.php';
copy($cesta, $cestaNew);
$graph = file_get_contents($cesta);
$graph = str_replace("prva", $first, $graph);
$graph = str_replace("druha", $second, $graph);
$graph = str_replace("1Perc", $first_leg, $graph);
$graph = str_replace("2Perc", $second_leg, $graph);
$graph1 = fopen($cestaNew, 'w+');
fwrite($graph1,$graph);
fclose($graph1);
ftp_chmod($conn_id, 0777, $file);
súbor som skúšal vytvoriť pomocou copy aj bez neho (iba fopen($cestaNew, 'w+'))
súbor graph.php je zdrojový. Ten načítam, zmením riadky s hodnotami a legendou grafu a ukladám ako nový súbor.
Joker
Profil
sedgar:
Mě napadá, že chown a chgrp asi nejde kvůli tomu, že uživatel pod kterým běží PHP na to nemá práva.
Ale proč nejde chmod? Napíše to nějakou chybovou hlášku?

Ale jestli ten soubor pak zpracovává jiný PHP skript, proč se liší uživatelé?
Druhá věc, kde vlastně mění práva to ftp_chmod (neboli jaké spojení je v tom $conn_id)? A uspěje to skutečně?
Pokud ano, jakto, že se ten soubor pak nedá používat?
sedgar
Profil *
Joker:
- súbor vytvorený na serveri má iné UID/GID - 509, súbory z localhostu majú 508
- súbor sa vytvorí (predtým tam nieje), keď ftp_chmod zakomentujem, zostane CHMOD iné - 0644
- štandardný chmod vypíše: function.chmod() operation not permitted
- conn_id: je štandardné spojenie bez parametrov - $conn_id = ftp_connect($ftpServer); - bez portu a timeoutu
Joker
Profil
sedgar:
Tak to je podivné.

- conn_id: je štandardné spojenie bez parametrov - $conn_id = ftp_connect($ftpServer); - bez portu a timeoutu
Čili se vlastně obloukem přes FTP hlásíte na vlastní web se svým jménem a heslem?

Pokud soubor vytvoří PHP, je logické, že má jiné UID. Ale pak nechápu, proč nemá práva na chmod.
Zároveň nechápu, proč naopak jde ftp_chmod, čili FTP účet práva na chmod má.
A i s původními právy, jaktože ten soubor pak nejde otevřít ani pro čtení? 0644 by mělo být rw- r-- r--, čili pro čtení by ho měli otevřít všichni.
sedgar
Profil *
Problém vyriešený:
po konzultácii s technikom providera sme zistili, že bol v php.ini nastavený parameter safe_mode = on. Po jeho prestavení na safe_mode = off všetko šlape :).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: