abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 16:22 | Nová verze

Byl vydán DB Browser for SQLite (sqlitebrowser) ve verzi 3.10.0. Nejnovější stabilní verze této grafické nadstavby nad relačním databázovým systémem SQLite (Wikipedie) přináší například integraci s DBHub.io, tj. platformou pro sdílení SQLite databází. Podrobnosti na GitHubu.

Ladislav Hagara | Komentářů: 1
včera 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 0
19.8. 13:44 | Zajímavý software

Evropská komise vydala novou verzi 1.4.0.1 svého open source v Javě naprogramovaného softwaru pro online průzkumy EUSurvey. Online dotazníky lze vytvářet na stránkách Evropské komise nebo si lze software stáhnout (zip a war) a nainstalovat lokálně. Zdrojové kódy jsou k dispozici pod licencí EUPL (European Union Public Licence).

Ladislav Hagara | Komentářů: 0
18.8. 23:55 | Komunita

Ubuntu 17.10 (Artful Aardvark) bude ve výchozím stavu zobrazovat Dok (Launcher). Jedná se o rozšíření GNOME Shellu Ubuntu Dock. To bylo forknuto z rozšíření Dash to Dock. Ukázka na YouTube [reddit].

Ladislav Hagara | Komentářů: 2
17.8. 15:33 | Nová verze

Byla vydána verze 17.08.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace kmag, kmousetool, kgoldrunner, kigo, konquest, kreversi, ksnakeduel, kspaceduel, ksudoku, kubrick, lskat a umbrello byly portovány na KDE Frameworks 5.

Ladislav Hagara | Komentářů: 0
17.8. 15:11 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2017-08-16 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Nejnovější Raspbian je založen na Debianu 9 Stretch. Přehled novinek v poznámkách k vydání. Řešena je také bezpečnostní chyba Broadpwn (CVE-2017-9417).

Ladislav Hagara | Komentářů: 1
17.8. 12:33 | Nová verze

Byla vydána verze 3.2.0 programu pro skicování, malování a úpravu obrázků Krita. Přehled novinek v poznámkách k vydání a na YouTube.

Ladislav Hagara | Komentářů: 0
17.8. 11:44 | IT novinky

Minulý týden na šampionátu The International 2017 byl představen bot, který poráží profesionální hráče počítačové hry Dota 2. V nejnovějším příspěvku na blogu se organizace OpenAI o projektu více rozepsala a zveřejnila videozáznamy několika soubojů.

Ladislav Hagara | Komentářů: 7
16.8. 17:11 | Komunita

Byly zveřejněny videozáznamy přednášek z Fedora 26 Release Party konané 10. srpna v Praze.

Ladislav Hagara | Komentářů: 0
16.8. 15:33 | Komunita

Přesně před čtyřiadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 8
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (18%)
 (76%)
Celkem 364 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: PHP: include konfigurace v prilinkovanem adresari

    15.10.2009 11:22 ph0enix | skóre: 18 | Praha
    PHP: include konfigurace v prilinkovanem adresari
    Přečteno: 377×

    Ahoj, v jednom projektu jsem dospel do stavu, ze mam sadu skriptu pro zobrazovani statistickych dat jenz jsou stejne pro vice instanci a vystup je ovlivnovan pouze nastavenim konfiguracnich promennych. Dal jsem vsechny tyto soubory do samostatneho adresare a vytvoril na nej symbolicky odkaz. V tuto chvili ale resim jak spravne a elegantne vyresit nacitani konfigurace z nadrazeneho adresare.

    proj1/
      config_vars.php
      stats => ../common/stats/
    proj2/
      config_vars.php
      stats => ../common/stats/
    common/stats/
      index.php
    

    Bohuzel pokud v takto umistenem skriptu /proj1/stats/index.php chci nacist projektove specifickou konfiguraci pomoci include('../config_vars.php'), je tento soubor hledan v adresari common namisto proj1. Pokud vytvorim adresar stats a nalinkuji jednotlive skripty, vse funguje jak ocekavam. Touto cestou se vsak nechci ubirat nebot projektovych adresaru je k desitce a pocet skriptu jde take do desitek.

    Mate nejaky napad jak to elegantne vyresit?


    Řešení dotazu:


    Odpovědi

    Víťa Šmíd avatar 15.10.2009 21:20 Víťa Šmíd | skóre: 41 | blog: vituv_blog | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari
    include dirname($_SERVER['SCRIPT_FILENAME']) . '/../config_vars.php';

    ?
    When Chuck Norris plays Monopoly, it affects the actual world economy. | Matematika pro normální lidi
    16.10.2009 10:22 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    To bohuzel nefunguje. Je to ekvivalentni k include('../config_vars.php');. Pri pouziti teto konstrukce je nacten soubor /common/config_vars.php namisto ocekavaneho /proj1/config_vars.php (pokud se se ke skriptu pristupuje pres link v adresari proj1. Vypada to, ze nejprve se nahradi link a pak v takto ziskanem adresari udela krok do nadrazeneho adresare ve kterem hleda pozadovany soubor.

    16.10.2009 10:44 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    Zrejme jsem neco nepochopil... Shell se chova naprosto stejne. Pokud se nastavim do proj1 tak pozadavek na editaci souboru

    vi ./stats/../config_vars.php

    otevre soubor config_vars.php z adresare common namisto z proj1. Tedy jako by nahradil link fyzickym umistenim tj.

    vi ./../common/stats/../config_vars.php

    Muze mi to nekdo znalejsi vysvetlit? Toto chovani je pro mne docela neprijemnym prekvapenim.

    16.10.2009 14:06 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari
    Sice se toto chovani muze zda divnem, ale ve skutecnosti je jedine spravne. Problem totiz je ze konstrukce ".." neznamena nadrazeny adresar jak je uveden v ceste, ale znamena adresar, kteri je v aktualni adresari ulozen v souborovem system jako parent. Pr:
    chocholj@cz995891 r $ ls -laRi
    .:
    total 16
    4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 .
    4723905 drwxr-xr-x 30 chocholj users 4096 2009-10-16 14:56 ..
    4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 aa
    4732737 drwxr-xr-x 2 chocholj users 4096 2009-10-16 15:00 bb

    ./aa:
    total 16
    4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 .
    4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 ..
    4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 stats
    4732965 -rw-r--r-- 1 chocholj users 4 2009-10-16 14:56 txt

    ./aa/stats:
    total 8
    4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 .
    4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 ..

    ./bb:
    total 12
    4732737 drwxr-xr-x 2 chocholj users 4096 2009-10-16 15:00 .
    4723576 drwxr-xr-x 4 chocholj users 4096 2009-10-16 14:56 ..
    4139335 lrwxrwxrwx 1 chocholj users 11 2009-10-16 15:00 stats -> ../aa/stats
    4732967 -rw-r--r-- 1 chocholj users 4 2009-10-16 14:56 txt
    chocholj@cz995891 r $ ls -laRi bb/stats/
    bb/stats/:
    total 8
    4732968 drwxr-xr-x 2 chocholj users 4096 2009-10-16 14:56 .
    4732494 drwxr-xr-x 3 chocholj users 4096 2009-10-16 14:56 ..

    Oznacene adresare jsou vsechny stejne (pozna se to podle cisla inode):
    ./aa = ./aa/. = ./aa/stats/.. = ./bb/stats/..
    16.10.2009 11:18 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    Tak jsem to vyresil pomoci generovani kodu a volani eval(). Vytvoril jsem si funkce na normalizaci cesty a generovani PHP kodu jenz ulozi do zasobniku prave vkladany soubor, provede include a uklidi zasobnik. Pomocne funkce a inicializace zasobniku vypadaji nasledovne

    // oprava cesty
    function file_path_unify($param_filename) {
      $param_filename = str_replace('\\', '/', $param_filename);
      $param_filename = preg_replace('/\/+/', '/', $param_filename);
      $param_filename = str_replace('/./', '/', $param_filename);
      $param_filename = preg_replace('/\/[^\.\/]+\/\.\.\//', '/', $param_filename);
    
      return $param_filename;
    }
    // vygenerovani kodu pro include
    function get_relative_include($param_filename, $param_once = 0) {
      $result  = 'array_push($INC_STACK, file_path_unify(dirname($INC_STACK[count($INC_STACK) - 1]) . "/" . "' .
        $param_filename . '"));';
      if ($param_once) {
        $result .= 'include_once($INC_STACK[count($INC_STACK) - 1]);';
      } else {
        $result .= 'include($INC_STACK[count($INC_STACK) - 1]);';
      }
      $result .= 'array_pop($INC_STACK);';
    
      return $result;
    }
    
    // inicializace zasobniku volani
    $INC_STACK = Array($_SERVER['SCRIPT_FILENAME']);
    

    Ve vlastnim skriptu /proj1/stats/index.php pak konfiguracni soubor nactu pomoci

    eval(get_relative_include("../config_vars.php"));
    

    Takto mohu soubory vkladat ve vice urovnich zanoreni a ve vsech pouzivat relativni cesty k aktualne provadenemu souboru se zachovanim cesty pres kterou jsem se k souboru dostal a nikoliv k jeho fyzickemu umisteni na disku.

    16.10.2009 12:46 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari
    Nestacilo by dat nekam na zacatek ini_set('include_path', ini_get('include_path') . ':' . dirname($_SERVER['SCRIPT_FILENAME']));? Prijdeme mi trochu prasacke kvuli takovehle blbosti pouzivat eval.
    16.10.2009 14:45 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    To bohuzel nevyresi pozadavek na vlozeni souboru z nadrazeneho adresare. Taktez zrejme bude problem v pripade, ze soubor stejneho jmena je i v aktualnim adresari.

    Řešení 1× (ph0enix (tazatel))
    Víťa Šmíd avatar 16.10.2009 16:42 Víťa Šmíd | skóre: 41 | blog: vituv_blog | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari
    Dostat se v cestě o jeden adresář výše přece jde i bez použití "..". Stačí třeba použít dirname dvakrát:

    include dirname(dirname($_SERVER['SCRIPT_FILENAME'])) . '/config_vars.php';

    IMHO je na tak jednoduchý problém zbytečné vymýšlet kejkle s nějakou globální proměnnou, *_replace a (chraň Tučňák!) eval :-)
    When Chuck Norris plays Monopoly, it affects the actual world economy. | Matematika pro normální lidi
    AraxoN avatar 16.10.2009 18:05 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    jj, eval() je zlo.

    K pôvodnej otázke: ja to riešim tak, že spoločné skripty sú len na jednom mieste, a odkaz na toto miesto sa napíše do configu.

    A fine is a tax for doing wrong. A tax is a fine for doing well.
    19.10.2009 09:34 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari

    Tohle reseni mne nenapadlo. Diky.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.