Autor Zpráva
Mesiah
Profil
Dobrý den,

z nějakého důvodu mi PHP hlasí chybu:
Fatal error: Cannot redeclare naindex() (previously declared in C:\Web\www\eshop\fce.php:6) in C:\Web\www\eshop\fce.php on line 7

Ve skriptu:
<?php
session_start();
include("opendb.php");
include("fce.php");
include("public.php");
// Admin sekce

if ( JeAdmin() )
{
  ZobrazVolbyAdmina();
}
else
{
  NaIndex();
}
?>
A NaIndex():
function NaIndex()
{
  header("Location: index.php");
}
tiso
Profil
Mesiah v súbore fce.php máš 2x deklarovanú funkciu NaIndex()
Mesiah
Profil
tiso
bohužel tak snadný to neni. Ne, je tam jen jednou. A jinde nez ve fce.php neni...
takze ze by zase dalsi mysteriozni zahada z php?
tiso
Profil
Mesiah - ukážka z toho súboru fce.php (prvých 11 riadkov) by sa nenašla?
Smokie
Profil
S tíhmle errorem sem se včera taky chvíli štval. Takže :
Podívej se jestli ti funkce
ZobrazVolbyAdmina(); 
nevkládá stránku, která obsahuje na začátku
include("fce.php"); 

Takhle vymýšlet čím to bude je opravdu těžké a jestli to bude pořád přetrvávat (ten error ) tak by se hodily všechyn soubory o kterých je v tom skriptu řeč ;-)
Mesiah
Profil
Smokie
v tom problem nevidim a porad ten zahadny error pretrvava...
takze postuju skripty:
Admin
Fce
Public

Jen doplnim, že stránky testuju na Windows Vista, kde mi bezi Apache 2.2.10 (IIS mi neslo na Home Premium nainstalovat)
bohyn
Profil
Mesiah
V dodanych scriptech chybu nevidim, zkontroluj si jeste jestli nevkladas fce.php v opendb.php - ta je vkladana 2x coz asi neni zadouci. Pokud to tam 2x byt musi kvuli jinym scriptum, pouzij include_once
Mesiah
Profil
bohyn
ee, open db je jen pro pristup do db, takovy univerzalni script.
<?php
// OPEN DB
$conn = @mysql_pconnect("localhost", "eshop", "internetovy");
if (!@mysql_select_db("eshop", $conn))
{ // skrýt chybu a ukončit aplikaci, pokud se nepodaří připojit k databázi
  echo "<b>Omlouváme se, databáze nenií v tuto chvíli přístupná.<b/>";
  exit;
}
mysql_query("SET NAMES 'cp1250'");
?>
tiso
Profil
Mesiah - vyzerá to ako problém s tým include, skontroluj si kde čo vkladáš, alebo všade daj include_once. Mohla by ti pomôcť funkcia http://sk.php.net/manual/en/function.get-included-files.php
Mesiah
Profil
Tak, problem vyřešen.
Šlo o nastavení serveru. Asi.
Normálně pracuju na linuxu na nejakym profesionalne zprovoznenym serveru a tam je chovani takove, ze bez toho abych nenaincludoval nejaky skript, tak se k urcite fci nedostanu. Tady na ntb to je nastaveny obracene, nevim jestli je to tim ze jde o windows, nebo nekvalitne nastavenym serverem (asi tohle), ale includovat skripty staci jen v indexu, vic netreba.
Proto to hlasilo chybu redeklarace fce, ted je mi to uz jasne. :)
Všem děkuji za pomoc a doufám, že můj problem někdy někomu pomůže vyřešit jeho problem.

S pozdravem a přáním pěkných svátků
Mesiah
bohyn
Profil
Mesiah
OS ani nastaveni serveru na to nema vliv. Kdyz nekam vlozis script s funkci tak ta funkce je od te chvile dostupna pro cely zbyvajici kod. Neco si delal spatne.
tiso
Profil
bohyn - možno mal nastavené http://sk.php.net/manual/en/ini.core.php#ini.auto-prepend-file
Mufna
Profil
Taky jsem se setkal s problémem, kdy jsem měl hlášku Cannot redeclare header(). Načítal jsem do index.php soubor, ve kterém byly deklarované funkce pro jednotlivé části stránky - header(), footer() atd. Zkoušel jsem include, include_once, require i require_once a nic. Pomohlo mi nakonec to, že jsem přejmenoval fci header() - já ji konkrétně přejmenoval na wrt_header() a ostatní pak taky na wrt_neco(), tedy wrt_footer() atd. Ale problém se týkal zřejmě pouze fce header(), ostatní bych přejmenovávat určitě nemusel. V případě fce header() však jde o vestavěnou fci PHP (pokud vím) a tak to asi může zlobit, pokud si svoji fci pojmenujete stejně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: