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í
×
dnes 17:28 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2017-6074 v Linuxu zneužitelné k lokální eskalaci práv. Jde o chybu v podpoře DCCP (Datagram Congestion Control Protocol). Do linuxového jádra se dostala v říjnu 2005. V upstreamu byla opravena 17. února (commit). Bezpečnostní chyba byla nalezena pomocí nástroje syzkaller [Hacker News].

Ladislav Hagara | Komentářů: 2
dnes 15:00 | Zajímavý software

Společnost Valve vydala novou beta verzi SteamVR. Z novinek lze zdůraznit oficiální podporu Linuxu. Další informace o podpoře této platformy pro vývoj virtuální reality v Linuxu v diskusním fóru. Hlášení chyb na GitHubu.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Nová verze

Po necelém roce od vydání verze 0.67 byla vydána verze 0.68 populárního telnet a ssh klienta PuTTY. Podrobnosti v přehledu změn. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
včera 21:32 | Nasazení Linuxu

Canonical představuje nejnovější verzi chytré helmy DAQRI s Ubuntu pro rozšířenou realitu. K vidění bude příští týden v Barceloně na veletrhu Mobile World Congress 2017.

Ladislav Hagara | Komentářů: 0
včera 21:31 | Pozvánky

Pro zájemce o hlubší znalosti fungování operačních systémů připravila MFF UK nový předmět Pokročilé operační systémy, v rámci něhož se vystřídají přednášející nejen z řad pracovníků fakulty, ale dorazí také odborníci ze společností AVAST, Oracle, Red Hat a SUSE. Tento předmět volně navazuje na kurz Operační systémy ze zimního semestru, ale pokud máte praktické zkušenosti odjinud (například z přispívání do jádra Linuxu) a chcete si

… více »
Martin Děcký | Komentářů: 6
včera 21:30 | Pozvánky

Czech JBoss User Group Vás srdečně zve na setkání JBUG v Brně, které se koná ve středu 1. března 2017 v prostorách Fakulty Informatiky Masarykovy Univerzity v místnosti A318 od 18:00. Přednáší Tomáš Remeš a Matěj Novotný na téma CDI 2.0 - New and Noteworthy. Více informací na Facebooku a na Twitteru #jbugcz.

mjedlick | Komentářů: 0
20.2. 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 10
20.2. 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
20.2. 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 51
20.2. 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 35
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (71%)
 (4%)
 (10%)
Celkem 684 hlasů
 Komentářů: 66, poslední dnes 18: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: 376×

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.