Autor Zpráva
Nailen
Profil
Zdravím, už se celé poledne trápím asi s banalitou.

Mám nějaký script. Pak mám soufor funcs.php kde mám funkce.

Mám tam např. tuto funkci:

function resultBlock($errors,$successes){
    //Error block
    if(count($errors) > 0)
    {
        ...
    }
    //Success block
    if(count($successes) > 0)
    {
        ...
    }
}

Ve scriptu ji volám takto:

echo resultBlock($errors,$successes);

Doteď funguje vše v pořádku. Takto používám ve scriptu spoustu funkcí. Dlouho jsem ale na projektu nedělal a teď jsem chtěl dodělat novou funkci. Takže jsem do funcs.php doplnil toto:

function test($successes)
{
  echo "testovaci funkce</br>" . $successes . "<br>test";
}

Do scriptu napsal toto:

echo test($successes);

Po spuštění stránky dostávám následující chybu:

Fatal error: Uncaught Error: Call to undefined function test() in /home/www/.../test.php:151 Stack trace: #0 {main} thrown in /home/www/.../test.php on line 151

Tuší někdo čím by to mohlo být, že mám funkci stejně jak ostatní a přitom každá nová mi začíná tímto hlášením? Na FTP se soubor přepíše a je tam aktuální kód. Zkoušel jsem jiné prohlížeče, takže cash, to taky asi nebude.

PS: funkce i adresy jsem zkrátil, aby ukázka nebyla tak dlouhá.
Nailen
Profil
Opravdu tu není nikdo kdo by mi poradil jak dál?

Dnes jsem zkusil vzít funkční funkci. Jen ji okopírovat a pojmenovat jinak. tato nová kopie hlásí stejnou chybu. Psal jsem na hosting. Prý žádnou keš nemají co by to dělala. Data která nahraji na FTP se musí hned projevit.
Tomášeek
Profil
Nailen:
V uvedeném popisu/kódu chyba neni.

Odmýšlim to, ze funkce by nemela echovat, ale returnem vracet hodnotu. To ale tuto chybu nezpůsobuje.
Kajman
Profil
Když dáte tuto funkci hned na začátek souboru funcs.php, tak to také nefunguje?
Nailen
Profil
Tomášeek:

ano, mám ji použitou a returnem vrací hodnotu do podmínky. S tím echem to bylo jen na ukázku.


Kajman:

ano nefunguje ani na začátku. Chápu, že by mohla být někde v kódu chyba a tím se nenačíst celý soubor funkcí. Funguje to ale tak divně, že klidně vezmu poslední funkci v souboru. Tu okopíruji a dám opět na konec. Přejmenuji pouze název (připíši jedničku) a v tu chvíli tato nová už nefunguje. Mohu ji vzít a dát na začátek a také nefunguje. Fakt je to pro mě záhada čím by to mohlo být.
Davex
Profil
Nailen:
Opravdu upravuješ správný soubor, který je někam vložený pomocí include nebo require? Není na webserveru zapnuté OPcache s vysokou hodnotou v konfigurační volbě opcache.revalidate_freq nebo vypnutým opcache.validate_timestamps?
Keeehi
Profil
Nailen:
Co se stane když nějakou funkci co funguje v tom kódu jen rozbiješ. Například tam dáš
function some_name() {
    echo "killed";
    exit;
    
    // zbytek obsahu
Nailen
Profil
Keeehi:

tak nastavení serveru OK


Keeehi:

funkci to nerozbilo a díky tomu jsem přišel na, to kde je problém.

v rootu mám script, který volá funkce. V něm mám require_once("models/config.php"); a v tomto configu mám require_once("funcs.php");

tento funcs.php je také v adresáři models. Celou dobu jsem editoval tento funcs.php v models. Teď jsem ale zjistil, že je ještě jeden stejný soubor funcs.php přímo v rootu. Tam když dělám změny, tak už to frčí. Takže problém vyřešen. Nechápu jak se ale tento soubor dostal do rootu. Když jsem to programoval, tak jsem pracoval jen s tím v models.

Chci ho tedy zpět vrátit do models adresáře. Když ho ale volám v models/config.php pomocí require_once("funcs.php"); tak se načítá ten z rootu. Když to přepíšu na require_once("models/funcs.php"); tak to píše failed to open stream: No such file or directory

Poradí mi někdo jak je správný zápis? Děkuji a omluvte moje neznalosti.


možná někdo napíše že jsem lama, že jsem si nevyhledal kde všude jsou funkce použité :-) To jsem hledal, ale na lokále ne na FTP a na lokále jsem si myslel že mám kopii 1:1. Bohužel ale na lokále v rootu tento soubor chyběl.

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:

0