Dibi Connection localhost vs. server
- besir
- Člen | 170
Ahoj,
mam v Nette použitou dibi, na localu mi to vše funguje v pohodě, jenže
při přesunu na testovací server se mi nechce dibi připojit k DB. Laboruju
s tím celý den, procházel sem snad všehny vlákna a prostě to nemůžu
vyřešit :-(
config.neon
common:
parameters:
database:
driver: mysql
host: localhost
database: pmi
user: pmi
password: zaheslovano
lazy: true
charset: utf8
php:
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
nette:
session:
expiration: '+ 14 days'
services:
database:
class: DibiConnection(
'%database.driver%:host=%database.host%;dbname=%database.database%'
%database.user%
%database.password%
)
#setup:
#- setDatabaseReflection( Nette\Database\Reflection\DiscoveredReflection() )
authorizator:
class: AclPmi\Security\Acl
authenticator:
class: AclPmi\Security\Authenticator
arguments: ['@database']
factories:
production < common:
development < common:
bootstrap.php
use Nette\Application\Routers\Route;
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
// Configure application
$configurator = new Nette\Config\Configurator;
// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');
// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
dibi::connect($container->params['database']);
// Setup router
$container->router[] = new Route('index.php', 'Sign:', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Sign:in');
// Configure and run the application!
$container->application->run();
dokonce sem zkoušel na prasáka do bootstrapu tohle:
dibi::connect(array('driver'=>'mysql','host'=>'localhost','database'=>'pmi','user'=>'pmi','password'=>'zaheslovano'));
ale v obou případech sem se dočkal pouze exception v logu http://img23.imageshack.us/…612at234.png
Prosím o pomoc, už netuším co sem kde zprskal. Díky
- nanuqcz
- Člen | 822
Ahoj, s největší pravděpodobností máš špatné údaje k DB. Podaří se ti připojit k DB pomocí klasického mysql_connect?
// bootstrap.php
mysql_connect($container->params['database']['host'], $container->params['database']['user'], $container->params['database']['password']);
mysql_select_db($container->params['database']['database']);
- besir
- Člen | 170
nanuqcz napsal(a):
Ahoj, s největší pravděpodobností máš špatné údaje k DB. Podaří se ti připojit k DB pomocí klasického mysql_connect?
// bootstrap.php mysql_connect($container->params['database']['host'], $container->params['database']['user'], $container->params['database']['password']); mysql_select_db($container->params['database']['database']);
Ahoj, zkoušel jsem vypsat params a ty se zdaj byt v pořádku. Údaje k DB jsou v pohodě, přes adminer se s nima přihlásim. Zkooušel jsem v configu i toto:
services:
database:
class: DibiConnection(
'%database.driver%:host=%database.host%;dbname=%database.database%'
'username=pmi'
'password=zaheslovano'
)
nebo
services:
database:
class: DibiConnection(
'%database.driver%:host=%database.host%;dbname=%database.database%'
'pmi'
'zaheslovano'
)
- JuniorJR
- Člen | 181
Nechybí ti čárky mezi parametry? Nikdy jsem to nezkoušel, takže nevím… Ale jelikož ti to neháže chybu, tak to asi bude v pořádku.
class: DibiConnection(
'%database.driver%:host=%database.host%;dbname=%database.database%',
%database.user%,
%database.password%
)
Editoval JuniorJR (13. 6. 2012 11:58)
- besir
- Člen | 170
JuniorJR napsal(a):
Nechybí ti čárky mezi parametry? Nikdy jsem to nezkoušel, takže nevím… Ale jelikož ti to neháže chybu, tak to asi bude v pořádku.
class: DibiConnection( '%database.driver%:host=%database.host%;dbname=%database.database%', %database.user%, %database.password% )
Nn, čárky to nedělají, nechápu to, na localhostu to funguje normálně. Kdyby měl eventuelně někdo chuť, mohu na server zřídit ftp přístup do adresáře s aplikací :-)
- besir
- Člen | 170
Milo napsal(a):
V configu to máš jako
service
a pak stejně používášdibi::connect()
. Seš si jistej, že ta vyjímka vyskakuje právě vbootstrap.php
?
No právě ze to nevyskakuje v bootsrapu, ale ze service, kdyz to z bootstrapu smazu tak se nic nedej. Porad se to tvari uplne stejne.
@JuniorJR Cache sem mazal už asi 1 000 002× :D mazu ji po kazde zmene.
Editoval besir (13. 6. 2012 13:19)
- Milo
- Nette Core | 1283
DibiConnection
používá jinou syntax DSN než
PDO
. Viz. DibiConnection API:https://api.dibiphp.com/…ion.php.html#68
Takže buď:
class: DibiConnection(
'driver=%database.driver%&host=%database.host%&dbname=%database.database%&user=%database.user%&password=%database.password%'
)
Nebo rovnou:
class: DibiConnection(%database%)
Editoval Milo (13. 6. 2012 15:03)
- besir
- Člen | 170
HosipLan napsal(a):
Podle toho a kamarada zdrojaku jsem to rozchodil na localu, ale na serveru od wedosu to přestalo chodit.
Nebo rovnou:
class: DibiConnection(%database%)
Jinak tohle chodi, nechapu ze vyse napsana jako prvni prispevek na lokalu funguje :-/ Nicmene ted jsem u jine chyby :D
Editoval besir (13. 6. 2012 17:16)
- besir
- Člen | 170
No tak na jendom serveru mi to funguje (savana) a na druhem ne (wedos). V config.neon mam adresu serveru 127.0.0.1 ,ale dibi si nekde nevim kde vycuca vm2743.wedos.net . Coz je sice teoreticky spravne, ale neda se tak pripojit k DB. Testovano v admineru. Nenapada Vas este kde by to mohla brat? Cache smazana.
Editoval besir (13. 6. 2012 21:54)
- besir
- Člen | 170
22 napsal(a):
Je úplně zbytečné spamovat obě fora (dibi, nette). Jinak Nette si určitě nikde tu hodnotu nevymslí. Bere ji z cache Configuratoru, leda by jsi někde později tu hodnotu nějak měnil.
No tak chyba na straně serveru, sice to dost dobře nechápu, ale prostě to
tak je. Ten dotaz ze 127.0.0.1 na vm2743.wedos.net asi přeložil wedos.
Jediné co jsem udělal bylo povolení přístupu k DB z vnějšku, to bude
chtít ale určitě ošetřit. Je to díra.
Nicméně stále nechápu proč adminer se připojil, ale nette, resp. dibi
ne :-(
- besir
- Člen | 170
22 napsal(a):
Proč používáš localhost(127.0.0.1) u Wedosu? správně by jsi tam měl dát přidělenou adresu DB serveru. Moc nevím, co vymýšlíš..
No jenže přes tu se nepřipojim pokud nemam povolený přístup z vnějšku… :-( Nevím přesně jak to mají pošetřené, mam VPS u nich. Teprve se tam rozkoukávám a jelikož sem ji převzal a je tam pár projektů tak nechci moc laborovat…
Editoval besir (14. 6. 2012 0:51)