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 21:55 | Zajímavý software

    Nástroj sql-tap je proxy mezi aplikací a databází, které zachytává všechny SQL dotazy a zobrazuje je v terminálovém rozhraní. Zde lze téměř v reálném čase zkoumat dotazy, sledovat transakce a spouštět SQL příkaz EXPLAIN. Podporované databázové systémy jsou pouze PostgreSQL a MySQL. Zdrojový kód je dostupný na GitHubu, pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 13:55 | Nová verze

    Byla vydána nová verze 9.2 textového editoru Vim (Vi IMproved). Přináší vylepšené doplňování, podporu schránky ve Waylandu, podporu XDG Base Directory (konfigurace v $HOME/.config/vim), vylepšené Vim9 skriptování nebo lepší zvýrazňování změn. Vim zůstává charityware. Nadále vybízí k podpoře dětí v Ugandě. Z důvodu úmrtí autora Vimu Brama Moolenaara a ukončení činnosti jím založené charitativní organizace ICCF Holland projekt Vim navázal spolupráci s charitativní organizaci Kuwasha.

    Ladislav Hagara | Komentářů: 1
    14.2. 12:33 | Zajímavý projekt

    Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.

    NUKE GAZA! 🎆 | Komentářů: 1
    14.2. 12:22 | Nová verze

    Byla vydána nová verze 3.7.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.

    Ladislav Hagara | Komentářů: 0
    14.2. 05:00 | Komunita

    Všem na AbcLinuxu vše nejlepší k Valentýnu aneb Dni lásky ke svobodnému softwaru (I love Free Software Day, Mastodon, 𝕏).

    Ladislav Hagara | Komentářů: 9
    13.2. 19:44 | Zajímavý projekt

    Eric Migicovsky představil Pebble Emulator, tj. emulátor hodinek Pebble (PebbleOS) běžící ve webovém prohlížeči. Za 6 hodin jej napsal Claude Code. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    13.2. 17:44 | Nová verze

    Byla vydána nová verze 3.41 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.11 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    13.2. 12:11 | IT novinky

    Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.

    Ladislav Hagara | Komentářů: 19
    13.2. 11:44 | IT novinky

    Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.

    Ladislav Hagara | Komentářů: 2
    13.2. 04:44 | Humor

    Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.

    NUKE GAZA! 🎆 | Komentářů: 36
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (1%)
     (12%)
     (27%)
    Celkem 872 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    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: 478×

    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

    15.10.2009 21:20 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: PHP: include konfigurace v prilinkovanem adresari
    include dirname($_SERVER['SCRIPT_FILENAME']) . '/../config_vars.php';

    ?
    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))
    16.10.2009 16:42 12345 | skóre: 41 | blog:
    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 :-)
    AraxoN avatar 16.10.2009 18:05 AraxoN | skóre: 47 | 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.

    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.