Problém s právy u složky temp?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
coyot_
Člen | 12
+
0
-

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
+
0
-

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í

coyot_
Člen | 12
+
0
-

Děkuji za první odpověď. Tyto složky mi existují, z čehož vyplývá, že problém musí být jinde. :-(

Patrik Votoček
Člen | 2221
+
0
-

pozor zapisovatelná musí být i temp/cache povolení zápisu u temp nestačí!!!

coyot_
Člen | 12
+
0
-

Ano, zkoušel jsem nastavit práva jak temp (rekurzivně), tak i temp/cache (pro jistotu). I přesto mi to hlásí stále tu samou chybu. :-(

Filip Procházka
Moderator | 4668
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Díky za odpovědi. Teď hned nemůžu, ale během dneška sem naházím ty kódy. Byl jsem teď 2 dny mimo internet, tak jsem neměl čas sledovat fórum. Pokud vím, složka není systémová a mám tam přístup normálně. Dokonce jsem zkoušel měnit vlastníky, jestli není problém v tom.

coyot_
Člen | 12
+
0
-

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)

Minsc
Člen | 3
+
0
-

caute podarilo sa ti to nejako vyriesit lebo ja mam presne ten isty problem a uz tiez skusam vsetko mozne a nic

dotTwelve
Člen | 167
+
0
-

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)