Found section ‚common‘ in configuration, but corresponding extension is missing

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

Zdravím,
Snažím sa rozdeliť v configu Databázu na Localhost a Produktčnú

common:
	parameters:
		database:
		driver: mysql
		host: 127.0.0.1
		user: root
		password:
		options:
			lazy: yes

production < common:
	parameters:
		database:
		driver: mysql
		host: localhost
		dbname: **************
		user: **************
		password: **************
		options:
			lazy: yes

ale vždy skončím pri chybe
Found section ‚common‘ in configuration, but corresponding extension is missing.

20:    $container = $configurator->createContainer();
Zuben45
Člen | 268
+
0
-

SontoEremo napsal(a):

Zdravím,
Snažím sa rozdeliť v configu Databázu na Localhost a Produktčnú

common:
	parameters:
		database:
		driver: mysql
		host: 127.0.0.1
		user: root
		password:
		options:
			lazy: yes

production < common:
	parameters:
		database:
		driver: mysql
		host: localhost
		dbname: **************
		user: **************
		password: **************
		options:
			lazy: yes

ale vždy skončím pri chybe
Found section ‚common‘ in configuration, but corresponding extension is missing.

20:    $container = $configurator->createContainer();

co takhle využít config.local.neon ? :)
Jinak https://doc.nette.org/cs/database ;)

CZechBoY
Člen | 3608
+
+1
-

Máš nastaveno Configurator::AUTO při přidávání toho konfiguračního souboru v bootstrapu?
https://api.nette.org/…tor.php.html#…

$configurator = new Nette\Configurator;
...
$configurator->addConfig(__DIR__ . '/config/config.neon', Nette\Configurator::AUTO);
SontoEremo
Člen | 341
+
0
-

@Zuben45
co takhle využít config.local.neon ? :)
ale ja to mám v config.local.neon-e

Šaman
Člen | 2666
+
+1
-

Nejde o to, že to máš v config.local.neon, ale o to, že sekce již nejsou defaultně podporované. Je to zastaralý koncept a dnes se již různé konfigurace pro různé stroje řeší právě tím config.local.neon, který se většinou neverzuje.

Pokud chceš použít sekce, tak musíš vkládat konfigurační soubor s parametrem, který ty sekce zapíná, jak to píše @CZechBoY.

Ale spíš se to dělá tak, že na localhostu máš jiný config.local.neon, než na produkci. Problém se sekcemi je ten, že:

  • může být mnoho různých vývojových databází (každý vývojář má svoji a nemusí se nutně jmenovat stejně, pak jsou testovací db apod.)
  • nechceš mít přece v repozitáři uložené klíčky k produkční databázi (kvůli bezpečnosti – externí kodér by opravdu neměl mít přístup třeba k databázi produkčního eshopu. Ono ani interní programátoři ne, to je věc jen administrátora.)

Editoval Šaman (23. 12. 2015 5:31)

SontoEremo
Člen | 341
+
0
-

Takže som prechádzal fórum už asi po 5x
A z toho čo som pochopil je, že:

Vytvorím si dva neon-i napr.
config.dev.neon a config.pro.neon

Niekde dám ignorovať nahratie súboru config.dev.neon a na produkčnom pracujem s config.pro.neon a na localhoste s config.dev.neon… Ale ako nastaviť bootstrap? tak aby bral že toto je DB pre local a toto pre Podukčný web? a kam mám zapísať aby nebral deployment súbor config.dev.neon?

či som to celé zle pochopil?
Ale asi som to celé zle pochopil :-)

Ďakujem za odpovede.

Šaman
Člen | 2666
+
+1
-

Ne.

  • Máš klasicky config.neon pro běžná nastavení. Ten se verzuje.
  • Pak máš config.local.neon a ten se neverzuje. Většinou se verzuje jen šablona.
  • Každý, kdo si chce u sebe zprovoznit aplikaci, si z té šablony vytvoří config.local.neon a v něm si upraví hodnoty jak chce.
  • Do bootstrapu se nijak nezasahuje, ten načítá oba a pokud ten druhý chybí, tak zařve.

Typická ukázka triviální instalace takové aplikace je tady. Pokud tedy na vytvoření databáze nepoužíváš něco chytřejšího, třeba migrace.

Editoval Šaman (23. 12. 2015 12:32)

SontoEremo
Člen | 341
+
0
-

@Šaman
Stále to nechápem
Snažím sa to takto spustiť

common:
	services:
		database:
		class: Nette\Database\Connection

production < common:
	parameters:
		database:
			driver: mysql
			host: 127.0.0.1
			username: root
			password:
			database: tennails
			profiler: true


development < common:
	parameters:
		database:
			driver: mysql
			host: localhost
			username: ************
			password: ************
			database: ************
			profiler: true

No ladenka vždy kričí

Nette\DI\ServiceCreationException
Class and factory are missing in definition of service 'database'.
CZechBoY
Člen | 3608
+
0
-

Asi moc nechápu co chceš udělat… Proč je prázdnej řádek s common: service: database?

Editoval CZechBoY (23. 12. 2015 14:49)

Šaman
Člen | 2666
+
+2
-

Aha, já jsem nezdůranil jednu věc. Když se používá ten přístup, který jsem popsal, tak se vůbec nepoužívají sekce common, production a development.

Prostě pokud je nějaká konfigurace rozdílná pro různé stroje, tak se přesune do config.local.neon a tento soubor si každý upraví podle svého. Sekce nejsou potřeba, zapomeň na ně, je to zastaralý koncept.
Dával jsem odkaz na svůj config, udělej to podle toho.

SontoEremo
Člen | 341
+
0
-

@Šaman
Snažím sa podľa tvojho ale stále neúspešne!

File 'C:\......app/config/config.local.neon' is missing or is not readable.
Mysteria
Člen | 797
+
0
-

Tak máš špatně nastavenou cestu kde ho hledat. Pokud ho máš normálně ve složce app/config, tak bys měl mít bootstrap.php něco jako tohle:

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
SontoEremo
Člen | 341
+
0
-

@Mysteria

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

$configurator->setDebugMode(TRUE);

$configurator->enableDebugger(__DIR__ . '/../log');

$configurator->setTempDirectory(__DIR__ . '/../temp');

$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->register();

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');

$container = $configurator->createContainer();

return $container;
SontoEremo
Člen | 341
+
0
-

@Šaman
Urobil som to podľa tvojho…
v config som vytvoril config.local.neon.example ponechal config.neon a zmazal config.local.neon
stále to kričí

File 'C:\......app/config/config.local.neon' is missing or is not readable.

Viem, že preto lebo nevie nájsť config.local.neon ale ty ho tam tiež nemáš ja už neviem ako to spraviť aby bola jedna DB na localhoste a jedna na stránke.

Šaman
Člen | 2666
+
+3
-

OMG. Vždyť jsem to popsal tady, i v tom odkazu na popis instalace.
Ale že jsou ty vánoce, tak ještě jednou:

  • Samozřejmě potřebuješ config.local.neon, vždyť ho načítáš. Problém je v tom, že ho nemůžeš verzovat (každý si do něho doplní jiné hodnoty a nechceš, aby ti ho při každém git pull repoitář přepsal). Proto taky v repozitáři není, je tam jenom šablona, ve které je ukázáno co všechno je potřeba nastavit.
  • Ten soubor si vytvoříš z té šablony (kopírováním – ta šablona tam musí zůstat, protože je verzovaná).
  • Takže teď máš config.local.neon který je nastavený jako ignorovaný a v něm si nastavíš připojení k db, nebo jakoukoliv další konfiguraci (načítá se jako druhý, takže přepisuje i hodnoty z config.neon).

Výhoda je, že si tam můžeš doplnit supertajné heslo, které nikdy neopustí daný stroj. Při deseti instalacích stejné aplikace má každá svůj unikátní config o kterém ostatní nic neví. A každá může být nakonfigurovaná jinak.


Ještě z jiného pohledu. Řešíme dva problémy – nastavení různé konfigurace pro různé servery a pak jak to bez konfiktů verzovat.

Různá konfigurace se udělá pomocí config.local.neon. V něm jsou jen věci, které souvisí s daným strojem (lokální nastavení). Aby si ho navzájem vývojáři v repozitáři nepřepisovali, tak je tento soubor ignorovaný.

A ta záležitost s config.local.neon.example (nebo jinak pojmenovanou šablonou) řeší to, aby bylo v repozitáři něco, z čeho lze ten config.local.neon vytvořit (často nejde jen o databázi).

SontoEremo
Člen | 341
+
0
-

@Šaman
Ale že jsou ty vánoce, tak ještě jednou: :-)
Takže config.local.neon vytvorený okopírovaný z tvojho config.local.neon.example pridané moje údaje do DB ale stále chyba

Unknown configuration option database.default.profiler.

Ak to zmažem tak

Service '23_App_Model_UserManager': Service of type Nette\Database\Context needed by App\Model\UserManager::__construct() not found. Did you register it in configuration file?

Ja fakt nechápem asi mi drbe z Vianoc ale neviem ta pochopiť absolútne…

David Matějka
Moderator | 6445
+
+1
-

ta ukazka od @Šaman je psana pro lean mapper. pro nette database pouzij konfiguraci jako je v sandboxu: https://github.com/…g.local.neon

SontoEremo
Člen | 341
+
0
-

David Matějka napsal(a):

ta ukazka od @Šaman je psana pro lean mapper. pro nette database pouzij konfiguraci jako je v sandboxu: https://github.com/…g.local.neon

Aj to som skúšal…
Berie to len localhost už produkčný nie a zas naopak ak zadám údaje z produkčnej DB už localhost kričí…

David Matějka
Moderator | 6445
+
+1
-

ukaz vsechny tvoje configy. a co to presne haze za chybu?

SontoEremo
Člen | 341
+
0
-

config.local.neon

database:
	dsn: 'mysql:host=127.0.0.1;dbname=mojadb'
	user: 'root'
	password:
	options:
		lazy: yes

config.neon

#
# WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
# https://nette.org/en/security-warning
#

parameters:
	mailer:
		smtp: true
		host: smtp.**********
		secure: ssl
		port: 465
		username: ******@******
		password: ***********

php:
	date.timezone: Europe/Prague


application:
	errorPresenter: Error
	mapping:
		*: App\*Module\Presenters\*Presenter


session:
	expiration: 14 days


services:
	- App\Repository\PaymentsRepository
	- App\Repository\DatesRepository
	- App\Repository\MonthsRepository
	- App\Repository\ClientsRepository
	- App\Model\UserManager
	- App\Forms\RegistraciaFormFactory
	- App\Forms\PrihlasenieFormFactory
	router: App\RouterFactory::createRouter
Nette\Database\ConnectionException #HY000
SQLSTATE[HY000] [1045] Access denied for user: 'root@10.20.0.254' (Using password: NO)

Editoval SontoEremo (24. 12. 2015 16:13)

David Matějka
Moderator | 6445
+
+1
-

no ze tam zadavas 127.0.0.1 a snazi se to pripojit k 10.20.0.254 je divny a samo se tak asi nedeje. vyhledej pouziti toho retezce (te IP) v projektu…

SontoEremo
Člen | 341
+
0
-

@DavidMatějka
127.0.0.1 ← zadávam ako localhost Xampp
ale potrebujem povedať tomu configu že nech berie localhost z produkčného a to neviem ako zadať
teda potrebujem dve databázy jedna pre local a jedna pre stránku na webe tak aby keď upravím na locali a nahrám deployment-om aby sa upravila stránka ale nemusel som prepisovať v configu údaje do DB

David Matějka
Moderator | 6445
+
+1
-

config.local.neon mas mit na produkci jiny. deployment si nastav tak, aby ti ten config.local.neon neprepisoval

SontoEremo
Člen | 341
+
0
-

Ale ako to nastaviť?
v zložke Deployment v .gitignore zadať app/config/config.local.neon? ale neviem ako zadať cestu

David Matějka
Moderator | 6445
+
+1
-

nevim, co pouzivas za nastroj na deployment..

SontoEremo
Člen | 341
+
0
-

David Matějka napsal(a):

nevim, co pouzivas za nastroj na deployment..

dg/ftp-deployment

David Matějka
Moderator | 6445
+
+1
-

vzdyt je to tam v readme uvedeny…

SontoEremo
Člen | 341
+
0
-

Sakra ja sa už zbláznim…
Nahrám config.local.neon na web v zložke Deployment v .gitignore zadám
app/config/config.local.neon prepíšem v config.local.neon na údaje localu dám deploy a zmaže mi to config.local.neon na webe fakt neviem čo stým…
Deployment /.gitignore

/vendor
/composer.lock
/tests/tmp
/tests/output
app/config/config.local.neon

deployment.php

'ignore' => '
			.git*
			project.pp[jx]
			/deployment.*
			/log
			temp/*
			!temp/.htaccess
			/app/config/config.local.neon
		',

deployment.ini

ignore = "
	.git*
	project.pp[jx]
	/deployment.*
	/log
	temp/*
	!temp/.htaccess
	/app/config/config.local.neon
"

A nakoniec
.gitignore v zložke mojej stránky

log/*
temp/*
vendor/*
!.gitignore
!.htaccess
!web.config
app/config/config.local.neon
David Matějka
Moderator | 6445
+
+1
-

jestli jsem dobre to dobre pochopil po nakouknuti do kodu, tak ten nastroj pouziva nejaky soubor .deployment (nebo .htdeployment), kde ma seznam souboru po poslednim deployi. kdyz si pridal tamten do ignore, tak pri poslednim deployi existoval, nyni ne a tak se to smaze. takze smaz ten soubor .deployment a melo by to byt ok

edit: vlastne to nemusis mazat, jen ho znovu vyvor a dal uz by se mazat nemel

SontoEremo
Člen | 341
+
+1
-

Konečne problém vyriešený…
Pre tých ktorý riešia budú riešiť podobný problém…
nahral som na web cez deployment config.local.neon kde boli údaje z produkčnej DB…
v Deployment-e som vložil do
deployment.ini

ignore = "
	.git*
	project.pp[jx]
	/deployment.*
	/log
	temp/*
	!temp/.htaccess
	/app/config/config.local.neon
"

a deployment.php

'ignore' => '
			.git*
			project.pp[jx]
			/deployment.*
			/log
			temp/*
			!temp/.htaccess
			/app/config/config.local.neon
		',

Stačilo vypnúť commander znova zapnúť a už mi config.local.neon nenahráva na web takže som zmenil údaje na local DB a všetko fičí stránky upravujem… uploadnem a všetko klape …

Všetkým za pomoc vopred Ďakujem Hlavne @Šaman a @DavidMatějka za trpezlivosť :-)