< index >

Problémy a jejich řešení

Obsah:

  1. Po přihlášení do administračního modulu se nemůžu dostat na žádnou položku v hlavím menu.
  2. U ankety v levém informačním sloupci se mi nezobrazují barevné sloupce.
  3. Cannot modify header information - ... nebo Cannot add header information - ...
  4. Chybové hlášení: "Spojeni se serverem nelze vytvorit!" - varianta A
  5. Chybové hlášení: "Spojeni se serverem nelze vytvorit!" - varianta B
  6. Chybové hlášení: "Systém nemůže identifkovat vybranou globální šablonu."
  7. Jakým způsobem mohu zaktivovat službu známkování článků?

 

1. Po přihlášení do administračního modulu se nemůžu dostat na žádnou položku v hlavím menu.

Otázka:
Stránky pro čtenáře jsou v pořádku, ale když se přihlásím jako admin + heslo tak se dostanu jen na hlavní stránku v administračním modulu a ať kliknu na cokoliv tak mi to napíše hlášku:

"Error 2! You must enter password and user to connect this page!".

nebo

"Pro pristup na tyto stranky musite zadat uzivatelske jmeno a heslo.".

Jenže z jiného počítače, mi to funguje OK, jen na tom mém to né a né rozběhnout. Zkoušel jsem Explorer, Operu atd., mazal jsem keš (cache), znovu vytvářel DB a dokonce i reinstaloval Win 98, připojoval jsem se přes modem i mobil. Všem známím to jde, jen ne mně :-(. Co s tím?

Příčina číslo 1 - řešení:
Problém je v čase, který máte nastavený na svém počítači. Váš čas je totiž natolik rozdílný s časem vašeho webového (HTTP) serveru, že když se přihlásíte, tak se sice vytvoří spojení (tzv. session), ale jelikož máte jiný čas, než-li váš server a session se u ukládá i u vás prostřednictvím cookies, tak dojde při každém pokusu o další pohyb v administračním modulu při autorizaci k milnému rozhodnutí, že platnost spojení již vypršela a session je zneplatněna.

Celou věc lze samozřejmě vyřešit a to hned dvěma způsoby: 1) Synchronizujete svůj čas s časem vašeho HTTP serveru, 2) půjdete na to přesně z druhé strany a na místo synchronizace svého času s časem vašeho HTTP serveru jednoduše prodloužíte platnost jednoho připojení (session). Délka platnosti připojení se nastavuje v souboru "config.php" prostřednictvím položky (proměnné) $platnostauth=3600; (nebo v případě novější verze souboru "config.php": $GLOBALS['rsconfig']['platnost_auth']=3600;), kde délka platnosti připojení je vyjádřena počtem sekund. V našem případě tedy např. změníme hodnotu 3600 (= 1 hodina) na 7200 nebo ještě lépe na 14400 (= 4 hodiny) a docílíme tak prodloužení platnosti připojení o tři hodiny.

Příčina číslo 2 - řešení:
Další častým důvodem je standardně přednastavený zákaz používání globálních proměnných ve všech novějších verzích PHP (verze číslo 4.2.x a vyšší). Tuto skutečnost lze velice snadno napravit jedním jednoduchým zásahem v konfiguračním souboru "php.ini". Stačí si najít řádek "register_globals = Off" a změnit hodnotu "off" na "on". - Toto řešení platí (má smysl) pouze pro phpRS systémy verze 2.3.5 a nižší. phpRS verze 2.5.0 a vyšší již podporuje práci v obou případech nastavení!

Tato úprava umožní přístup ke všem vstupním hodnotám (např. z formulářů) prostřednictvím tzv. globálních proměnných. - Vývojový tým redakčního a informačního systému phpRS počítá s ochranou důležitých vstupů před jejich vlastním zpracováním!

Příčina číslo 3 - řešení:
Nevyhovující nastavení práce s cookies v rámci vámi používaného webového prohlížeče. - Doporučujeme prověřit veškerá nastavení webového prohlížeče, která mohou ovlivnit práci s cookies. V praxi tzn. prověřit nejen základní nastavení typu "povolit používání cookies", ale podívat se i na položky ovlivňující "bezpečnostní politiku prohlížeče" a "práci s dočasnými soubory".

Příčina číslo 4 - řešení:
Nevhodně (příliš přísně) nastavená restriktivní politika "firewallu" nebo "proxy serveru". - Správné nastavení "firewallu", případně "proxy serveru", je vždy velká alchymie a může se klidně stát, že zakážete i to, co jste zakázat nechtěli. Dnešní moderní "firewally / proxy server" dokáží velmi účinně blokovat i práci s cookies, proto vám doporučuji prověřit jejich nastavení.

Poznámka autora: V případě nutnosti přenastavení konfigurace "firewallu / proxy serveru" není vždy nutné úplně vypnout příslušné pravidlo, ale mnohdy stačí blíže specifikovat rozsah jeho platnosti. V případě povolení práce s cookies by se tak mohlo učinit např. pouze pro vybrané domény.

2. U ankety v levém informačním sloupci se mi nezobrazují barevné sloupce.

Otázka:
phpRS funguje, ale mám problém s barevnými sloupci (proužky) u ankety v levém informačním sloupci. Anketa jako taková pracuje správně a umožňuje i hlasování, ale nezobrazují se mi barevné sloupce, které by měly znázorňovat množství hlasů připadajících na jednotlivé odpovědi. Můžete mi poradit?

Řešení:
V tomto případě je problém naprosto evidentní a jde o neexistující nebo vypnutou podporu grafických funkcí ze strany vaší PHP distribuce. - Konkrétně jde o GD knihovnu (soubor "php_gd.dll" pro verzi 1.x a soubor "php_gd2.dll" pro verzi 2.x), která zodpovídá za generování grafiky (např. png a jpg soubory) v rámci PHP jazyka.

Tento problém lze samozřejmě řešit několika způsoby, přičemž jednotlivá řešení jsou přímo závislá na skutečnosti, zda-li vaše PHP distribuce onu zmíněnou GD knihovnu obsahuje nebo ne.

3. Cannot modify header information - ... nebo Cannot add header information - ...

Otázka:
phpRS mi sice funguje, ale úplně nahoře se mi na stránce neustále zobrazuje následující hlášení:

"Warning: Cannot modify header information - headers already sent by (output started at /www/petr/phprs/config.php:70) in /www/petr/phprs/myweb.php on line 165".

Řešení:
Hlavní příčinou výše uvedeného typu problému je většinou "nešikovný" zásah administrátora webu do zdrojového kódu phpRS systému, který následně vyvolá problémy při práci s cookies.

Celý problém spočívá v tom, že pokud vám chce server poslat cookies, tak to musí provést prostřednictvím HTTP hlavičky, která se zasílá ještě před odesláním samotných dat (např. HTML stránka). A zde právě nastává problém, jelikož většina tzv. "nešikovných" zásahů do phpRS systému skončí tak, že se dané osobě podaří vytvořit situaci, která pošle na standardní výstup nějaké znaky ještě před odesláním samotného cookies, což vzhledem k výše uvedené podmínce není možné a chyba je na světě.

Na druhou stranu jsou tyto chyby velice snad opravitelné, jelikož vám chybové hlášení ve své druhé třetině jednoznačně identifikuje problematické místo.

"Warning: Cannot modify header information - headers already sent by (output started at /www/petr/phprs/config.php:70) in /www/petr/phprs/myweb.php on line 165".

Například zde je problém na 70. řádku v souboru config.php, kde došlo s největší pravděpodobností k vložení mezery na konec PHP souboru. Konkrétně tato chyba je pro začátečníky poměrně typická, jelikož si neuvědomují, že i mezera je znak a každý znak, který není uzavřen ve výkonné PHP oblasti (<? ... ?>) je automaticky odeslán na standardní výstup.

4. Chybové hlášení: "Spojeni se serverem nelze vytvorit!" - varianta A

Otázka:
Mám dotaz. Pokoušel jsem se nainstalovat phpRS na svůj webhosting, ale pořád se mi nějak nedaří navázat spojení s databázovým server. Postupoval jsem při instalaci takto:

  1. přes webové rozhraní jsem založil novou mysql databázi
  2. upravil jsem odpovídajícím způsobem soubor config.php a nakopíroval veškeré phpRS soubory na webový server
  3. nakonec jsem spustil "db_phprs.php" script a pokusil se založit phpRS databázi

A právě zde začaly mé problémy. I když jsem všechny parametry pro připojení již několikrát zkontroloval, tak mi zakládací skript pořád hlásí následující chybu: "Spojeni se serverem nelze vytvorit!"

Řešení:
I když je řešení tohoto problému docela jednoduché, tak se rozhodně jedná o zajímavý problém, jelikož se na první pohled zdá vše naprosto v pořádku a vlastně i je!

Konkrétně v tomto případě bylo zjištěno, že za celý problém může webhostingový partner, který nepodporuje persistentní spojení s MySQL DB serverem, které phpRS standardně využívá pro připojení ke svému databázovému serveru.

Účinným řešení tohoto problému je tedy změna typu připojení z persistentního na běžné. Tato změna se provede následujícím způsobem:

Úprava zakládacího skriptu "db_phprs.php":

v souboru db_phprs.php si najděte následující řádek (měl by být na řádku číslo 12):

@$dbspojeni=mysql_pconnect($dbserver,$dbuser,$dbpass);

a změnte jeho původní obsah na níže uvedený:

@$dbspojeni=mysql_connect($dbserver,$dbuser,$dbpass);

Úprava konfiguračního souboru "config.php":

v souboru config.php si najděte následující řádek (měl by být na řádku číslo 59):

@$dbspojeni=mysql_pconnect($dbserver,$dbuser,$dbpass);

a změnte jeho původní obsah na níže uvedený:

@$dbspojeni=mysql_connect($dbserver,$dbuser,$dbpass);

Tento problém byl prozatím potvrzen u webhostingové služby www.pipni.cz.

5. Chybové hlášení: "Spojeni se serverem nelze vytvorit!" - varianta B

Otázka:
Stále se mi nedaří zřídit databázi pro systém phpRS a spustit stránku "phprs/index.php"!

Vždy, když spustím formulář "db_phprs.php" (již jsem si několikrát ověřil vyplněná data), žádná databáze se nevytvoří a v prohlížeči se vypíše "Spojeni se serverem nelze vytvorit!".

Nelze spustit ani "phprs/index.php" - vrací se stejné hlášení jako "db_phprs.php".

Řešení:
Nejčastějším důvodem výpisu chybové hlášky "Spojeni se serverem nelze vytvorit!", je chybné nastavení přihlašovacích (logovacích) údajů k MySQL databázi. Pokud si však jste jisti správností svého nastavení (zadaných dat), můžete svou pozornost obrátit jiným směrem.

Další, často podceňovanou, otázkou je aktuální funkční stav za instalované MySQL databáze. V zásadě jde o to, že MySQL databáze může být sice nainstalovaná a dokonce i spuštěná (ve smyslu spuštění aplikace), ale nemusí být v aktivním stavu tedy jinak řečeno, může být v pasivním stop stavu, kdy neodpovídá na žádný dotaz. V případě Windows instalace lze tento stav většinou velmi rychle zjistit prostřednictvím ikony "semafórek" umístěné na hlavní nástrojové liště (panelu umístěném defaultně ve spodní části obrazovky), kdy zelené světlo znázorňuje aktivní stav a červené stop stav. Databáze samozřejmě pracuje pouze v případě aktivního stavu.

Dalším potencionálním strůjcem problémů může být aplikace typu "firewall", která se stará o bezpečnost vašeho počítače či dokonce celé počítačové sítě. - Zde může nastat problém v případě špatného nastavení práv u MySQL databázového serveru a používaného HTTP serveru. Pokud například zakážete těmto aplikacím komunikaci i v prostředí vlastního intranetu (lokální sítě), tak může dojít k úplnému přerušení komunikace mezi těmito dvěma aplikacemi, což samozřejmě vyústí v nemožnost vytvoření prvotního spojení. Nicméně vše samozřejmě záleží na použitém nastavení u jednotlivých aplikací včetně firewallu a také na způsobu fungování samotného firewallu.

6. Chybové hlášení: "Systém nemůže identifkovat vybranou globální šablonu."

Otázka:
Nainstaloval jsem úspěšně phpRS systém a přesto mi to pořád při pokusu zobrazit čtenářské stránky (např. soubor index.php v kořenovém adresáři) vypisuje hlášku: "Systém nemůže identifkovat vybranou globální šablonu." - Nevím, kde to mám nastavit nebo jak to opravit.

Řešení:
S tímto problémem se lze setkat u phpRS verze 2.5.0 a vyšší, kde se využívá nový způsob instalace layoutů, který předpokládá před prvním spuštěním čtenářské části instalaci všech potřebných globálních a článkových šablon.

Popis instalace layoutů (a tím i globálních a článkových šablon) najdete v souboru "instalace_cz.txt", který je součástí každé oficiální phpRS distribuce nebo zde v on-line dokumentaci v kapitole První spuštění phpRS systému.

7. Jakým způsobem mohu zaktivovat službu známkování článků?

Otázka:
Instalace proběhla v pořádku a celý systém běží tak, jak má. Nicméně stále nemohu zaktivovat službu známkování článků, přestože v administračním rozhraní je u článků kolonka hodnocení. Prosím, jak to mám uvést do chodu? Je to snad nějaký plugin?

Řešení:
Počínaje verzí 2.5.0 je standardní součástí phpRS systému i služba "známkování / hodnocení článků" a její aktivace úzce souvisí s článkovými šablonami, kde se tato služba inicializuje. Pro fungování "hodnocení článků" tedy není nutné instalovat žádný nový plug-in či jinou součást phpRS systému!

Samotná aktivace služby "hodnocení článků" je otázka zásahu do kódu článkové šablony, kde si musíte pohlídat (na vhodném místě - např. pod obsahem článku) přítomnost volání funkce: HodnoceniCl(link_na_clanek);. Viz. níže ukázka části kódu článkové šablony. Další informace o článkových šablonách se dozvíte v kapitole: Jak změnit a upravit vzhled (layout) u phpRS systému

... další kód ...
<div class=\"clatext\">".$GLOBALS["clanek"]->Ukaz("uvod")."<br /><br />".$GLOBALS["clanek"]->Ukaz("text")."</div><br /><br />\n";
SouvisejiciCl($GLOBALS["clanek"]->Ukaz("link"));
HodnoceniCl($GLOBALS["clanek"]->Ukaz("link"));
... další kód ...

Poznámka autora: Pozorným očím jistě neuniklo, že způsob aktivace služby "hodnocení článků" je principiálně shodný s aktivací služby "související články". Pouze se mění jméno volané funkce.

< nahoru | index >