| domů | | ukázka | | download | | help |   | www.jkcz.info |


Zde naleznete návod na řešení nejčastěji nastávajících problémů.

Prosím, čtěte nejprve tuto stránku. Kontaktujte mne až v případě, že zde nenaleznete potřebné odpovědi. Například e-mailem freegal@jkcz.info nebo na ICQ (pozor změna! 394-646-575), kde prosím v poždavku autorizace zmiňte, že se jedná o podporu skriptu freegal.

Známé problémy:
  • Práva k adresářům a souborům
    Projevy:
    1. Unable to open './Velikonoce 2005/Obrázek(101).jpg.thumb.jpeg' for writing in /var/www/abcd.net/www/test/galerie.php on line 435
    (nebo podobná hláška)
    Tato chybová hláška vyjadřuje potřebu skriptu zapisovat do adresářů, které používá. Některé servery mají toto automaticky povoleno, některé ne. K vyřešení tohoto problému, musíte příslušným adresářům, ve kterých máte galerii a fotografie, přidělit příslušná práva. Každý hosting by měl mít k tomuto účelu své webové rozhraní. Pokud o něm nevíte a/nebo ho váš hosting nepodporuje - váš FTP klient určitě bude.

    Uvedeme si příklad "co dělat" na Total Commanderu. Po připojení se k serveru, najeďte na příslušný adresář a zvolte Files --> Change atributies (Soubory --> Změna atributů). V následující nabídce žaškrtejte "co můžete" (read, write, execute - u všech skupin). Pokud se v problematice více vyznáte, můžete zvolit i méně benevolentní oprávnění. Potvrďte. Vše by mělo nyní fungovat.

    Tip: Nastavení práv adresářů se u většiny serverů dědí. Proto doporučuji nejdříve u mateřského adresáře galerie (ten adresář, kam jste nahráli soubor galerie.php) práva nastavit a s ostatními již by neměla být potíž. Pokud napřed nahrajete fotky a teprve poté budete měnit práva, budete je ručně muset změnit u všech adresářů. Toto ovšem docela dobře řeší funkce v již zmiňovaném Total Commanderu "Recurse Subdirectories" ("aplikovat na podadresáře"), která to udělá za Vás.

    Proč to tak je: Každý server má nastavenou jinou politiku přidělování práv, bohužel nemohu znát konkrétní nastavení vašeho serveru, proto není možné udělat univerzální automatické řešení.

    Pro hlubší proniknutí do této problematiky doporučuji nastudovat php funkce chmod() a chown(), například na www.php.net

    Další možností, jak tento problém řešit je použití cizího skriptu na správu adresářů a souborů.
    Doporučuji QTO.com, je freeware jako naše galerie. Bohužel se jedná o skript v angličtině, ale běžné základy angličtiny postačí.

    2. Neexistující soubor galerie-data.dat
    Tento soubor vytváří galerie automaticky, jako úložiště pro uživatelské komentáře. Pokud se tento soubor nevytvořil a/nebo do něj nejde zapisovat, je postup zcela stejný jako v předchozím případě, jen je potřeba nastavit příslušná práva nadřazené složce - tj. složce, ve které je nahrán soubor galerie.php, nebo přímo souboru galerie-data.dat

  • Problém prázdné galerie
    Projev:
    Warning: imagejpeg(): supplied argument is not a valid Image resource in /3w/wz.cz/c/cz/galerie.php on line 372
    (a podobné)
    V galerii nemáte žádné obrázky. Prostě vytvořte příslušný adresář (např. Vanoce2005) a do něj nahrajte fotografie.

  • V Internet Expoloreru se mi nezobrazují fotografie
    Galerie používá k odlišení vašich fotoalb pouze názvy adresářu. V závislosti na nastavení serveru a Vašeho počítače může česká diakritika a mezery dělat problémy. Řešení je prosté -> Stačí Vaše adresáře (alba) prostě ochudit o diakritiku a mezery. Např. Vánoce 2005 --> Vanoce2005

  • Chyba: Call to undefined function ImageCreateTrueColor() in ...
    Pro správné fungování fotogalerie je nezbytné rozšíření php_gd2.dll. V novějších distribucích php (4 a výše) je již obsažena, pouze někdy není aktivní. Pokud narazíte na tento problém je třeba v souboru php.ini (ten naleznete v adresáři kde máte nainstalováno php) najít řádku ";extension=php_gd2.dll" a změnit ji na extension=php_gd2.dll (bez středníku na začátku, čímž povolíte její používání). Pokud v souboru php.ini máte i extension=php_gd.dll je naopak třeba před ní středník přidat, protože v některých případech může docházet ke konfliktům těchto knihoven.

    Pokud nemáte přístup k souboru php.ini nebo nemáte oprávnění jej měnit, kontaktujte prosím správce serveru a optejte se zda-li vám php_gd2 povolí.

    Více k phpgd naleznete zde


  • Chyba: Warning: is_dir(): open_basedir restriction in effect. File() is not within the allowed path...
    Soubor galerie.php a galerii jako takovou máte nahranou v hlavním adresáři hostingu. Některé servery to bohužel neumožňují. Řešení je prosté - nahrajte galerii do libovolného podadresáře na vašem webu. (Místo freegal.wz.cz/galerie.php mějte např. freegal.wz.cz/galerie/galerie.php)


  • Zakázaná funkce copy()
    Administrátoři některých freehostingů se nedávno rozhodli, zakázat používání funkce copy - z bezpečnostních důvodů. Funkce copy se ve skriptu freegal objevuje při kopírování obrázku na server přes rozhraní v galerii. V případě uploadu na server lze funkci copy() nahradit funkcí move_uploaded_file()

    Jak poradil uživatel Radek, není potřeba měnit nic jiného, než pouze nahradit copy() za move_uploaded_file(), všechny atributy mohou zůstat stejné. Najděte tedy v kódu fotogalerie výskyt všech funkcí copy, které nejsou tzv. zakomentované (tj. nejsou před nimi dvě lomítka "//") - mělo by to být okolo řádků 1418 a 1433. Zde nahraďte copy za move_uploaded_file
    Více o funkci move_uploaded_file() naleznete zde


  • Řazení adresářů a obrázků v galerii
    Dostal jsem mejlem dotaz, ohledně řazení fotografií v galerii, moje odpověď.:

    Pro razeni "fotografii" podle abecedy lze ve zdrojovem kodu galerie najit radek

    $polepolozek = array_values($pp);
    a na dalsi radku
    sort($polepolozek);

    Toto je treba udelat dvakrat, jednou na radce 380 pro galerii, a jednou na radce 947 pro gallery slider.
    Pro razeni podle data pridani najdete radek

    $date = ("./$cesta/" .$polozka);
    bude kolem nej a za nim komentar, v kterem se bude psat "zde smazte sluvko filemtime", ktere uz je smazano, tak je treba jej naopak doplnit:
    $date = filemtime("./$cesta/" .$polozka);

    Co se tyce razeni adresar "alb" tam bohuzel mohu posluzit jen s abecednim razenim. Jinak by byl potreba vetsi zasah do zdrojoveho kodu.
    Postup je stejny jako pro fotografie. Pouze naleznete radku

    $ppv = array_values(array_diff ($pp, $oa));
    v orginalnim kodu radek 341 (a pripadne dalsi pro slider, a browser), na dalsi radku vlozte
    sort($ppv);

    Pokud je pro vas velice dulezite seradit i adresare podle abecedy, muzete udelat nasledujici dve veci.
    1. Pokud mate moznost dostat se k nastaveni serveru apache nebo jineho, na kterem bezi php, lze jej nastavit aby radil polozky v adresarich tak jak si budete prat.
    2. Muzete zkusit upravit kod nacitani adresaru obdobne jako se nacitaji obrazky. Bude treba tam zakombinovat asociovane pole s datumy adresaru.
    Na takoveto zmeny bohuzel, jak pisu na strankach, uz nemam cas, a potrebuji se venovat jinym vecem.


Vývoj skriptu freegal byl ukončen, prosím nepište návrhy na zlepšování a novou funkcionalitu. Bohužel na ně nebudu moci reflektovat. Přeji bezproblémový chod.

 

Jan Kosnar, freegal@jkcz.info, 2006