Autor | Zpráva | ||
---|---|---|---|
lopikol Profil |
#1 · Zasláno: 14. 6. 2011, 16:42:17
Řeším rozlišení připojení. Funguje to jen částečně, jelikož když se připojim přes $production, tak web sice jede jak má, ale vypíše mi to zprávu: Warning: mysql_connect():. Jak se jí zbavit, případně jak by jste to řešili? Řešení přes $_SERVER['SERVER_NAME'] nemohu použít, kvůli automatizaci.
$development = array( 'localhost', 'root', 'pwd', 'db' ); $production = array( 'localhost', 'root2', 'pwd2', 'db2' ); if (mysql_connect($development['0'], $development['1'], $development['2'])){ define('DEVELOPMENT_ENVIRONMENT', FALSE); }elseif (mysql_connect($production['0'], $production['1'], $production['2'])){ define('DEVELOPMENT_ENVIRONMENT', TRUE); }else{ throw new Exception('Can not connect to the database!'); } |
||
Tori Profil |
#2 · Zasláno: 14. 6. 2011, 17:13:29
lopikol:
„Řešení přes $_SERVER['SERVER_NAME'] nemohu použít“ Jakžto? Na localhostu si přece můžete ServerName nastavit jak potřebujete, ne? Jinak mně zatím vždycky stačilo tohle: $CFG['server'] = ($_SERVER['SERVER_NAME'] == 'localhost' || substr($_SERVER['SERVER_NAME'],0,3) == '127') ? 'devel' : 'production'; |
||
YoSarin Profil |
#3 · Zasláno: 14. 6. 2011, 17:16:09
Nechápu jak nastavuješ ty konstanty - při připojení k devel db nastavíš že nejsi v DEVELOPMENT_ENVIROMENT (což podle mě není pravda :) ).
Chybu to vypíše proto, že první pokus o připojení (ten k devel db) selže, protože devel db není na produkci dostupná. Můžeš potlačit výpis chyb (přes @), ale nedoporučuju to - zaděláš si tím na víc problémů... Spíš bych se vydal cestou lokálních configů, které budou obsahovat definici větve a odpovídající nastavení. Nevýhodou je, že lokální config pak nemůže být součástí SVN, ale zase obsahuje jen minimum informací a neměl by být problém vytvořit ho znovu. |
||
lopikol Profil |
#4 · Zasláno: 14. 6. 2011, 17:30:45 · Upravil/a: lopikol
Tori: JJ použít to mohu, ale $_SERVER['SERVER_NAME'] někde se připojuji na localhost, jinde to je 127.x.x.... jinde zase ip serveru (192.xxxxx) atd, takže bych potřeboval rozlišovat podle připojení k db.
YoSarin: Pravda, mám to prohozené, ale to není problém (zatím). Chci mít nastavené dvě připojení > localhost a když bude kod na webu. Když se bude připojovat k db, tak se definuje DEVELOPMENT_ENVIRONMENT, které pak určuje vypisování chyb. Pokud jsem na localhostu, tak to vypíše jméno chyby, soubor a číslo řádku. Pokud jsem na webu, tak se error uloží do logu a stránka se např přesměruje na error 500. Jestli znáte Nette, tak tam to takhle funguje > inspirace, ale prohledával jsem kod a nenašel jsem nic, čeho bych se chytl. |
||
Tori Profil |
#5 · Zasláno: 14. 6. 2011, 17:49:36
lopikol:
Tak zrovna Nette to taky řeší buď autodetekcí podle několika běžných IP, nebo ručním nastavením. |
||
YoSarin Profil |
#6 · Zasláno: 14. 6. 2011, 17:55:32
lopikol:
Jak říkám - mě se tohle osvědčilo řešit globálním a lokálními configy: config.ini (globální): promenna = "hodnota" druha_promenna = "druha hodnota" Lokální config pro development (config.local.ini): enviroment = "devel" db.host = "deve_db_host" db.user = "devel_user" db.port = "devel_port" db.pass = "devel_pass" db.name = "devel_db_name" Lokální config pro production (config.local.ini): (analogický k develovému, ale s jinými údaji). V php to pak provedeš cca takhle: $config = parse_ini_file('config.ini'); if (file_exist('config.local.ini')) { $local = parse_ini_file('config.local.ini'); $config = array_merge($config, $local); } mysql_connect($config['db']['host'], $config['db']['user'], $config['db']['password'], $config['db']['name']); define('ENVIRONMENT', $config['enviroment']); |
||
lopikol Profil |
#7 · Zasláno: 14. 6. 2011, 18:24:25
YoSarin:
Díky to je dobrej nápad, ale ještě jeden problém. Tvůj příklad znamené, že budu muset bud mazat nebo vytvářet config.local.ini, což moc automatické není :( |
||
lopikol Profil |
#8 · Zasláno: 14. 6. 2011, 19:31:02 · Upravil/a: lopikol
Prosim vás. Vysvětlí mi někdo co znamenaní ty : a ?
$addrs[] = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR']; Děkuji |
||
Tori Profil |
#9 · Zasláno: 14. 6. 2011, 20:25:23
To je zkrácený zápis if - else, Odkaz
|
||
YoSarin Profil |
#10 · Zasláno: 14. 6. 2011, 22:13:27
lopikol:
Mazat nebo vytvářet - na devel stroji/virtualhostu budeš mít jedno nastavení, na produkčním stroji/virtualhostu druhé. Obojí vytvoříš jen jednou... |
||
Časová prodleva: 13 let
|
0