Problém s právy u složky temp?
- coyot_
- Člen | 12
Zdravím. Jsem úplný začátečník s Nette. Používám Nette 2.0 Alpha a PHP 5.3.0 (skrz Wamp server).
Začal jsem aplikací, která je popisována v Quick Startu. Tzn. TodoList. Vše jsem dělal podle návodu. Žádné vlastní invence jsem nepřidával.
Dostal jsem se k bodu, kdy jsem měl vytvářet model. Když jsem změnil
obsah app/config.ini na obsah z tutoriálu. Nette mi začalo vracet tohle:
"InvalidStateException
Unable to write to directory ‚C:\wamp\www\Nette_test1\TodoList\document_root/../app/temp/cache‘. Make this directory writable."
Pochopil jsem, že mám asi špatně nastavená práva u temp, případně temp/cache. Ani po několika hodinách se mi nepodařilo přijít na to, jak tento problém vyřešit. Intuitivně jsem se snažil nastavit ve WIN7 práva těmto složkám tak, aby to fungovalo, ale nezadařilo se. Buď mi to WIN7 nedovolí, což nechápu proč, nebo je problém jinde (špatné nastavení apache, Nette), fakt nevim.
Proto bych potřeboval zjistit, jestli mám problém s WIN7, Nette, Wamp serverem, nebo s něčím úplně jiným. Jsem celkem v koncích. Pokud někdo máte tušení, co mám za problém, prosím o pomoc.
Jestli to bude nějaká moje hloupá chyba, tak se předem omlouvám, vysypu si na hlavu popel a pak si hodím mašli, protože kvůli tomuto problému mi už poměrně hrabe.
Omlouvám se za spam a předem děkuji za alespoň nějaké nápady.
David
- Filip Procházka
- Moderator | 4668
Tvým problémem je, že php nemůže zapisovat do složky
temp/cache
, jestli si dobře pamatuju, tak na windows se něco jako
oprávnění složek neřeší, takže by ti mělo stačit zkontrolovat jestli
složky C:\wamp\www\Nette_test1\TodoList\temp
a
C:\wamp\www\Nette_test1\TodoList\temp\cache
existují
- Patrik Votoček
- Člen | 2221
pozor zapisovatelná musí být i temp/cache
povolení zápisu u
temp
nestačí!!!
- Filip Procházka
- Moderator | 4668
Já to vidím tak, že máš někde špatně cesty, nebo jinou „hloupou“ chybu. Tyhle jsou nejhorší :) hlavní je neztrácet hlavu.
Hoď nám sem obsah app/config.ini
(vyhvězdičkuj připojení
k DB), svůj app/bootstrap.php
a někam uploadni HTML té
vyjímky, kterou ti to hází.
Případně bych doporučil vytvořit složku
C:\wamp\www\Nette_test2
a začít znovu :)
- Šaman
- Člen | 2659
Jedu na Macu, tak mě omluv jestli plácám nesmysly, ale zkontroluj si ještě na jakého uživatele jede Wamp a ta práva jestli odpovídají tomu.
Na localhostu mám pro vývoj nastavený Mamp tak, aby měl
moje práva (Run Apache/MySQL server as user
), takže má
administrátorská práva, ale v defaultní konfiguraci je to uživatel
mysql
a ten má práva omezená. A byl s tím nějaký problém,
proto jsem si to přepsal. (Byl problém se zápisem do tempu i když měl
nastavená práva na zápis i pro everyone – 777).
Na serveru máme linux a core Apache, tam není problém a práva fungují jak se nastaví.
- Filip Procházka
- Moderator | 4668
coyot_ má Windows7, tam se něco jako oprávnění zapisovat do šložky vubec neřeší, pokud není systémová, nebo označená jako chráněná, jestli se nepletu. Vidíš, tohle zkus zkontrolovat, jestli tam nemáš přístup pouze jako admin. To by teoreticky mohlo být ono, nic jiného mě už nenapadá…
- coyot_
- Člen | 12
Tak se mi to trochu natáhlo.
html vyjímky: přímo tady
bootstrap.php:
<?php
/**
* My NApplication bootstrap file.
*
* @copyright Copyright (c) 2010 John Doe
* @package MyApplication
*/
// Step 1: Load Nette Framework
// this allows load Nette Framework classes automatically so that
// you don't have to litter your code with 'require' statements
require LIBS_DIR . '/Nette/Nette/loader.php';
// Step 2: Configure environment
// 2a) enable NDebug for better exception and error visualisation
NDebug::$strictMode = TRUE;
NDebug::enable();
// 2b) load configuration from config.ini file
NEnvironment::loadConfig();
// Step 3: Configure application
// 3a) get and setup a front controller
$application = NEnvironment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;
// Step 4: Setup application router
$router = $application->getRouter();
$router[] = new NRoute('index.php', array(
'presenter' => 'TodoList',
'action' => 'show',
), NRoute::ONE_WAY);
$router[] = new NRoute('<presenter>/<action>/<id>', array(
'presenter' => 'TodoList',
'action' => 'show',
'id' => NULL,
));
dibi::connect(Environment::getConfig('database'));
// Step 5: Run the application!
$application->run();
?>
config.ini
*EDIT: omlouvám se, ale nějak se mi nedaří dát config.ini do code …
`
;
; SECURITY WARNING: it is CRITICAL that this file & directory are NOT
accessible directly via a web browser!
; https://nette.org/…rity-warning
;
[common]
; PHP configuration
php.date.timezone = „Europe/Prague“
; variables
variable.tempDir = %appDir%/temp
variable.logDir = %appDir%/log
; services
service.Nette-Security-IAuthenticator = Users
service.Nette-Loaders-RobotLoader.factory = Nette\Configurator::createRobotLoader
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE
[production < common]
; common database connection
database.driver = mysql
database.database = todolist
database.charset = utf8
database.lazy = TRUE
database.host = localhost
database.username = produkcnilogin
database.password = produkcniheslo
[development < production]
; database options in development mode
database.profiler = TRUE
database.username = root
database.password = root
`
- hesla k db jsem zatim zanechal tak jak byly v navodu, mam za to, ze to neni problem hesel k db … k tomu patri jeden dotaz, na localhostu heslo k db nemam, jak ho mam v config.ini zapsat? prazdne zavorky? nebo za rovnitko nedavat vubec nic?
Editoval coyot_ (31. 12. 2010 19:22)
- dotTwelve
- Člen | 167
Minsc napsal(a):
caute podarilo sa ti to nejako vyriesit lebo ja mam presne ten isty problem a uz tiez skusam vsetko mozne a nic
Tedka jsem premistil cely web na jiny hosting a mam ten samy problem taky.
Vyreseno: stacilo nastavit prava na 777 – pri presunu mezi hostingy se nezachovaly prava na slozkach…
Editoval dotTwelve (1. 6. 2011 19:39)