Izstrādes/produkcijas vides noteikšana
#1
Posted 2012.06.17 14:49
Atradu jēdzīgu variantu ar virtualhost'u uzliekot vides mainīgo (SetEnv DEV "1"), ko pēc tam dabūjam ar getenv('dev').
Tiktāl labi,bet problēma ar CLI vidi - tur apache netiek aiztikts, un tāds vides mainīgais nepastāv.
REMOTE_ADDR arī nav jēga čekot, ko varētu darīt apaches gadījumā , jo tas ir tukšs zem CLI.
Varu čekot __FILE__ ceļa sākumu, bet tad tiek hardkodēta mana sistēmas konfigurācija, un tam zūd jēga, kad nebūšu vairs 1 izstrādātājs.
Idejas?
#2
Posted 2012.06.17 15:31
#3
Posted 2012.06.17 16:47
env DEV="1" /usr/bin/php /mans/php/fails.php
#4
Posted 2012.06.17 19:39
Es vienmēr esmu izlīdzējies ar vides uzstādīšanu config failā. Works all the time...
Kas tas par config failu? Viņš tiek versionēts? Tad sanāk, ka es vienkārši nevaru ielādēt kādu projekta versiju uz produkcijas servera, jo tas fails vienmēr būs jālabo uz produkcijas stāvokli :(
Pašlaik man konfig failā tiek uzsetota konstante, kas norāda vai ir dev vide (balstoties uz IP), un viss ok, kamēr nemēģinu darbināt no CLI to skriptu...
Uztaisi wrapperi:
env DEV="1" /usr/bin/php /mans/php/fails.php
Nesapratu, kur šis wraperis jātaisa? (piezīmēšu, ka produkcijas vide ir nix, bet izstrādāju zem win)
Edited by briedis, 2012.06.17 19:41.
#5
Posted 2012.06.17 19:56
test.php
<?php print empty($_SERVER['DEV']) ? "PROD" : "DEV";
test.bat
set DEV=1 C:\php5\php.exe test.php
Edited by marrtins, 2012.06.17 19:57.
#6
Posted 2012.06.17 20:04
Tāpēc taisam config-dist.php un uz konkrētās vides pārsaucam par config.php, kas, dabiski, ir ārpus versiju kontroles.Kas tas par config failu? Viņš tiek versionēts? Tad sanāk, ka es vienkārši nevaru ielādēt kādu projekta versiju uz produkcijas servera, jo tas fails vienmēr būs jālabo uz produkcijas stāvokli :(
#7
Posted 2012.06.17 20:45
#8
Posted 2012.06.18 09:55
Respektīvi ar __FILE__ palīdzību nodefinēt kontanti DEV
define('DEV', in_array(dirname(__FILE__), array(
'/home/draugz/www', //mana testa kaste
'/home/user2/www', //cits useris
)))
#9
Posted 2012.06.18 09:57
define('DEV', is_file('dev'));
Respektīvi savā smilškastē tev ir fails dev, kuru tu nekad nepievienosi SVN un nekopēsi uz serveri :) ja faila nav tad tiek pieņemta ka tā ir produkcija
#10
Posted 2012.06.27 01:14
Paldies par diskusiju!
#11
Posted 2012.06.27 18:01
Tas ir diezgan muļķigi, jo vienmēr var nejauši iekopēt to failu.Respektīvi savā smilškastē tev ir fails dev, kuru tu nekad nepievienosi SVN un nekopēsi uz serveri :) ja faila nav tad tiek pieņemta ka tā ir produkcija
#12
Posted 2012.06.27 18:03
PHP programmēšanā ir kā sintezators mūzikā - pateicoties tam ar to nodarbojas 1000x vairāk cilvēku nekā vajadzētu, no kuriem to 99.9% nevajadzētu darīt.
#13
Posted 2012.06.27 18:11
tas gan, bet nu vienkāršāk ir izveidot config failu kur pierakstās DB konekkcijas un tur arī ierakstīt kad tā ir produkcijas vide.Nejauši var arī DROP DATABASE uz produkcijas izpildīt.
piem: vide=0; bet izstrādes vide pārsauc par vide=1 ....
pašu failu vers. kontrolē nodefinēt kā readonly un miers,
nebūs problēmu kad būs vairāki izstrādātāji, ar daždām izstrādes vidēm ( konfigurācijām) , piem testa db konekcijām utt. ( kautvai doc roota struktūru )
#14
Posted 2012.06.27 18:35
PHP programmēšanā ir kā sintezators mūzikā - pateicoties tam ar to nodarbojas 1000x vairāk cilvēku nekā vajadzētu, no kuriem to 99.9% nevajadzētu darīt.
#15
Posted 2012.06.27 18:41
[cit] pašu failu vers. kontrolē nodefinēt kā readonly un miers, [/cit]Ja es sapratu tavu domu, tad kur atšķirība starp speciālu dev configu, ko arī nejauši var pārkopēt?
vienkārši neļaut kopēt pa virsu - pašus datus taču vienmēr var palabot caur FTP jo cik gan bieži uz servera manīsies db konekcijas informācija ...
piedevām tas ļauj izvairīties lai nejauši nesabojā kādu statisku info ( kautvai tie paši konekcijas dati, e-mail utt.. )
--
vel optimālāk kad vispār to failu uz katras vides izveido ar rokām, ( nu 5-6 rindiņas taču nav fatāli )un uzseto lai nejauši nevarētu pārkopēt ...
Edited by Grey_Wolf, 2012.06.27 18:41.












