phpRS 2.6.5 : phpRS Fórum
Toto fórum je určené výhradně k diskuzi o verzi phpRS v2.6.5.
phpRS - redakční a informační systém
problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-11, 17:01

Zdravím.
Měl jsem řadu let web caslavsko.net u jednoho poskytovatele, s kterým mám jinak dobré osobní vztahy a rád bych to tam nechal i nadále. Jenomže nedávno zrušil testovací server, kde caslavsko bylo a přesunul je na jiný, řekněme produkční, kde jsou nejspíše více "tvrdá" bezpečností pravidla. Přesun klapnul až na krátký několikahodinový problém s administrací (nežli se přepsaly DNS záznamy) dobře. Tedy až do okamžiku, kdy jsem chtěl nahrát obrázek. To skončilo s chybou "neznámý formát obrázku".

Myslel jsem nejdříve že je nějaký problém s obrázkem (nebyl, i obrázky které jsem tam již nahrával nyní nejdou)

Druhá myšlenka byla, že se jedná o problém s mou úpravou galerie, mám jí vlastní v podobě třídy s více funkcemi (např. možnost nahrát více obrázků naráz, nebo nadefinovat více náhledů a tak dále) Také to není ono, původní galerie, která je tam také nefunguje - akorát chybová hláška je anglicky, ale stejného významu.

Je pochopitelně potlačeno zobrazování chyb, ale hledal jsem v kodu a zjistil jsem že funkce getimagesize() nevrací pole, což by měla. Pak jsem na googlu našel poznámku o open_basedir restrikci této funkce. Tomu nerozumím moc dobře ale představuju si to jako prostor kam funkce smí a adresář /tmp je prostě někde mimo.

Na webu není povoleno phpinfo() ani většina ini_set, ale nakonec jsem zjistil že nastavit hlášení chyb pomocí ini_set možné je a dalo mi to tuto hlášku:

Warning: getimagesize(): open_basedir restriction in effect. File(/tmp/php5cS895) is not within the allowed path(s): (/var/www/virtual/caslavsko.net/public_html) in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 538 Warning: getimagesize(/tmp/php5cS895): failed to open stream: Operation not permitted in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 538

a na řádku 537 a 538 je pochopitelně:

// ziskani informaci o souboru
$probrparametry=GetImageSize($prsoubor);

Podle všeho to krachne na těch ověřovacích rutinách, kdy se informace o obrázku získá pomocí getimagesize a tím skript nepokračuje. Napsal jsem adminovi a ten odpověděl toto:

Pro upload obrazku jsem povolil tuto cestu: /var/www/virtual/caslavsko.net/tmp
Zkuste prosim prekonfigurovat z /tmp ma novou a melo by to bezet.

nj, ale co se myslí tím překonfigurovat z ... nerozumím tomu.

Chápu ho jako admina že mu nejspíše jde o bezpečnost v první řadě (na tom serveru bude více projektů a z mého nic nemá, kdežto ty ostatní ho živí. Problém si nemůže dovolit.). Krom toho mi kdysi JanVar vysvětloval jak má admin správně postupovat, tedy vše zakázat a pokud uživatelé moc řvou tam sem tam něco povolit (nepřesná citace) ;-)

Ale prostě tomu nerozumím a nevím si rady. Navíc v připravované verzi tam bude více míst, kde se bude něco nahrávat (i když, krom obrázků, bude vše z administrace). Pokud tomu někdo rozumíte, tak bych byl povděčen. Změnit hosting se mi nechce, podmínky a funkčnost je jinak vynikající. Navíc z přesunů databáze mám pupínky odjakživa.

Hepbegclub | Čáslavsko | MN Čáslav



Celkem upraveno 1×. Poslední úprava Kryšpín v 11.01.2012 17:03.

Re: problém s open_basedir
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2012-01-11, 17:16

To je problém verze 2.6 neboť php se pokouší přistupovat k souborům v tmp adresáři serveru, kde je po uploadu
restrikce serveru povolují přístup php je k souborům, které jsou v adresáři daného webu, takže verze 2.8 tento problém vyřešila tím, že se nejprve provede move_uploaded_file do adresáře galerie (který je už pod daným webem) a vše pak funguje jak má - v té verzi 2.6 se to move_uploaded_file provádí až později
takže buď přejít na novější verzi, nebo v aimggal.php upravit funkci function PridejOBRIG() podle vzoru z 2.8

Re: problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-11, 17:26

Aha, takže na move_uploaded_file restrikce tato neplatí a na getimagesize ano? To by mě nenapadlo, myslel jsem, že to platí pro všechny funkce. Takže to zkusím neměl by to být problém. Díky. Dám vědět.

Hepbegclub | Čáslavsko | MN Čáslav

Re: problém s open_basedir
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2012-01-11, 17:35

právě ta move_uploaded_file je jediná funkce, kterou na uploadnuté soubory můžeš použít, abys je dostal do "svých" adresářů, kde pak už fungují všechny funkce

Re: problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-11, 21:58

tak jsem to zkusil přehodit, nejdříve se vygeneruje nový název obrázku a pak se provede move_uploaded_file. Výsledkem je - bohužel - velmi podobná hláška ..open_basedir restriction in effect.

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/tmp/phpcqybJb) is not within the allowed path(s): (/var/www/virtual/caslavsko.net/public_html) in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 529
Warning: move_uploaded_file(image/201201112123_cokl_1.jpg): failed to open stream: Permission denied in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 529
Warning: move_uploaded_file(): Unable to move '/tmp/phpcqybJb' to 'image/201201112123_cokl_1.jpg' in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 529

stejný výsledek byl i když jsem nahradil celou tu funkci její verzí z phprs 281/282 (jen jsem přepsal phprs_sql na my_sql). Vyvolá to stejnou chybu.

Warning: move_uploaded_file(): open_basedir restriction in effect. File(/tmp/phpVVfTez) is not within the allowed path(s): (/var/www/virtual/caslavsko.net/public_html) in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 538
Warning: move_uploaded_file(image/201201112143_cokl_1.jpg): failed to open stream: Permission denied in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 538
Warning: move_uploaded_file(): Unable to move '/tmp/phpVVfTez' to 'image/201201112143_cokl_1.jpg' in /var/www/virtual/caslavsko.net/public_html/admin/aimggal.php on line 538

Hm, něco stejně bude špatně...

admin mi napsal tohle:
Mozna byste jako docasny tmp adresar mel pouzit skutecne tu absolutni
cestu, co jsem psal. Adresar /tmp je pro vas nedostupny ze security
duvodu (File(/tmp/phpVVfTez) is not within the allowed path).

Toto by mel byt vas tmp adresar: /var/www/virtual/caslavsko.net/tmp

zkusil jsem to přidat do funkce move_uploaded_file
if (move_uploaded_file($GLOBALS['rsconfig']['tmp_absolut'].$_FILES['prsoubor']['tmp_name'],$sb_info_novy_jmeno)):

kdy $GLOBALS['rsconfig']['tmp_absolut'].$_FILES['prsoubor']['tmp_name']
je
var/www/virtual/caslavsko.net/tmp/php3jrsbF
(případně totéž s / na začátku)

hlášky zmizely ale nemuvuje se to...
V průběhu ukládání souboru na server došlo k neočekávané chybě. Prosím opakujte akci.
:(

Hepbegclub | Čáslavsko | MN Čáslav



Celkem upraveno 2×. Poslední úprava Kryšpín v 12.01.2012 01:11.

Re: problém s open_basedir
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2012-01-12, 08:32

no v tom případě by se ale musel ten tmp adresář nastavit v php.ini - tam je upload_tmp_dir, aby php vědělo, kam uploadnuté soubory ukládat

tohle by ale měli dělat admini toho serveru

Re: problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-12, 08:55

Vrána.cz píše cosi o tom že by se měl adresář /tmp dávat dovnitř open_basedir. To ale u mě asi není. Nerozumím bezpečnosti www serverů, ale dost mi to komplikuje život, už týden nemůžu ke svému webu. Zkusím tam večer do kodu napsat ini_get(upload_tmp_dir) a zobrazit to.

Hepbegclub | Čáslavsko | MN Čáslav

Re: problém s open_basedir
Zaslán uživatelem/kou: MirekS (IP adresa zaznamenána)
Datum: 2012-01-12, 09:25

no by ti mělo vypsat to /tmp, ty sám si podle mě tohle nastavení nemůžeš měnit (a pokud ano, tak je to zase z hlediska bezpečnosti dost podivné)

a co se týče bezpečnostních důvodů - hackeři si například založí účet na stejném hostingu, přes svůj web si do společného tmp (tak jak to tu asi je) "něco" uloží a pak si to spustí z jiného webu, který chtějí napadnout - proto by web neměl mít možnost pracovat se soubory mimo jeho adresář, nicméně musí být nějak ošetřen ten upload

Re: problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-12, 10:47

To se tady asi nestane, to není žádný freehosting, naopak tam bude jen pár větších a asi hodně zabezpečených aplikací (a důležitých). Právě proto takové zabezpečení. Ale není mi jasné, proč nemůžu mít svůj adresář tmp v dosahu open_basedir tak abych mohl alespoň move_uploaded_file.

Možná to jde, jen to neumím správně naprogramovat. Zkusím tě sehnat někdy o víkendu, protože jestli to nerozchodím, tak budu muset jinam. Nemůžu mít web bez možnosti obrázků etc.

Hepbegclub | Čáslavsko | MN Čáslav

Re: problém s open_basedir
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2012-01-15, 22:50

Tak resume:
1) Upravil jsem tu galerii (a pak svoji verzi) podle galerie 281
2) Umožnil jsem adminovi serveru přístup do administrace a jak se zdá problém byl v tom, že on žil v představě že administruji přes secure připojení (https). A to co mi povoloval bylo v pro https. Nastavil to pro http a funguje to. Před chvílí jsem to právě dodělal.

Bude mě ještě čekat úprava v plánované verzi, ale to už bude snažší, když vím oč jde. Díky za cenné rady.

Hepbegclub | Čáslavsko | MN Čáslav



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.