Found section ‚common‘ in configuration, but corresponding extension is missing
- SontoEremo
- Člen | 341
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
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
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
@Zuben45
co takhle využít config.local.neon ? :)
ale ja to mám v config.local.neon-e
- Šaman
- Člen | 2666
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
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
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
@Š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'.
- Šaman
- Člen | 2666
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
@Š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.
- SontoEremo
- Člen | 341
@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
@Š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
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émgit 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 zconfig.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
@Š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
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
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čí…
- SontoEremo
- Člen | 341
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
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
@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
config.local.neon mas mit na produkci jiny. deployment si nastav tak, aby ti ten config.local.neon neprepisoval
- SontoEremo
- Člen | 341
Ale ako to nastaviť?
v zložke Deployment v .gitignore zadať
app/config/config.local.neon? ale neviem ako zadať cestu
- SontoEremo
- Člen | 341
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
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
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ť :-)