Nastavení souborových práv na serveru
- Phalanx
- Člen | 310
Ahoj, nerozběhne se mi aplikace kvůli tomu, že se nevytváří soubory
v temp/cache.
Nastavil jsem přístupová práva na 776 pro temp i log, ale to nestačilo,
musel jsem nastavit i app + vendor na 777 abych se vůbec dostal
k této chybě:
Nette\IOException: Unable to acquire exclusive lock on '/app/../temp/cache/Nette.Configurator/Container_7e2c9a3850.php.lock'
Nahrávám soubory přes FTP. Když se podívám na vlastníky, pak je skupina 1000 a vlastník 5000. Vůbec těmto rolím nerozumím, zdá se mi jakoby to měli na hostingu blbě nastavené.
Jediný webhosting, kde mám tento typ problému je Web4u.
Našel jsem diskuzi na podobné téma https://help.kdyby.org/question/?…
Bohužel nerozumím co bych měl jak nastavit.
Budu vděčný za jakékoliv rady.
Editoval Phalanx (14. 9. 2015 11:18)
- h4kuna
- Backer | 740
Souborům defaultně dávej 644 a adresářům 755. Pokud potřebuje aplikace někde tvořit soubory (upload, cache…) tak nastav adresář na 777 soubory neřešíš. Kdyby jsi je potřeboval přes ftp smazat tak v aplikaci těmto adresářům nastav umask(0) ale opravdu cíleně.
<?php
$currentDir = getcwd();
foreach (array($logDir, $tempDir) as $dir) {
chdir($dir);
umask(0);
}
chdir($currentDir);
?>
A musí to makat úplně všude.
Nezapomeň, pokud máš temp a log ve veřejné části webu tak na servru zakázat, aby se do nich nikdo nedostal.
- hoou
- Člen | 43
Mam rovnaky problem, tiez mi to vypisuje rovnaku chybu, ale nastavenim 777 pre temp a naslednym premazanim tejto zlozky sa nic nezmenilo. Skusal som aj ten trik s umask(0) a vypisal som si vysledok. Pri zlozke log mi to vratilo 0 a pri zlozke temp mi to vratilo 2. Podzlozky zlozky temp sa potom vytvaraju s pravami 750 a subory s pravami 640. Vedeli by ste mi niekto poradit?
- Phalanx
- Člen | 310
Mě se po změně na 777 vytvářejí podsložky 755 a soubory 644 i když jde o jiného uživatele.
Od podpory Web4U jsem zjistil následující:
Je to tím, že na vašich serverech se většinou ještě používá mod_php – tedy PHP běží v serveru Apache a potřebuje mít stejná práva jako web server. V tom případě si musíte vždy zajistit přímo z PHP, že si správně nastavíte masku přes umask a chmod, aby to šlo mazat i přes jiného uživatele ze serveru.
Je samozřejmě možné přehodit instalace na vašich serverech např. na php-fpm, které je výkonejší a kde je běžné, že běží PHP přímo pod uživatelem, bude to ale znamenat nějaké předělávky a bude potřeba vše důkladně otestovat.
Nedokážu říct, jestli Ti to pomůže.
- hoou
- Člen | 43
No tu sa jedna o Telekom. Dá sa vybrať medzi PHP 4, PHP 5 a MOD_PHP
5. PHP 4 som zatial ani neskusal, ale to mi asi najnovsie Nette ani nepojde
nie? Bolo tam najskor nastavene PHP 5, ale to mi neslo kvoli tomu, ze funkcia
ini_set() bola zablokovana. Na strankach pisu „Webové servery s označením
MOD_PHP5 sú primárne určené pre web stránky vytvorené pomocou
rôznych CMS systémov ako napr. Joomla, WordPress, Drupal, atď. Web stránky
vytvorené pomocou CMS systémov sa zobrazujú častokrát rýchlejšie
s využitím rôznych PHP akcelerátorov. ". Na tomto mi uz ini_set() islo, ale
mam teraz tento problem, o ktorom sa tu bavime. Nakoniec som ale zistil, ked
som skusil spustit RequirementsChecker, ze funkcia flock() je zablokovana.
"Function flock() is not supported on this filesystem. Nette Framework requires
this to process atomic file operations.“
Skusil som im napisat na podporu, ze ci sa s tym da nieco robit. Ak nie, tak
asi bude potrebne prejst na iny webhosting. Btw robim stranku pre jednu firmu,
kde uz ten Telekom mali zabehnuty, tak sa na tom snazim spojazdnit Nette.
V zivote by som si tam webhosting nekupoval.
- bo
- Člen | 16
Cau, trosku off-topic, ale pokud server bezi na Linuxu a ma zapnuty selinux, je treba si se selinuxem pohrat.
Mi na Centos7 zabira kontext httpd_sys_rw_content_t (asi dost otevrene, ale co uz)
Pokud vam Nette nabehne s error 500 We're sorry, zkuste setenforce 0. Pokud potom Nette nabehne normalne, zmente selinux kontext.
Ja vim, selinux se na serverech moc v Enforcing nepouziva, ale kdyby nahodou.