Sziasztok, bajban vagyok (és bocs, mert hosszú leszek)!
Feltöltöttem a szerverre és kicsomagoltam a mimemail és a webform modulok legfrissebb verzióit. Tényleg nem tettem semmi mást, de most egy bazi nagy fehér semmi fogad:
Már töröltem az összes cache tábla tartalmát és elkezdtem az index.php-tól kezdve print függvényekkel megkeresni, hogy hol akad el. Eddig jutottam:
index.php:
... require_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); print("index.php"); // <--- Eddig már nem jut el ...
bootstrap.inc, _drupal_bootstrap():
... case DRUPAL_BOOTSTRAP_FULL: require_once './includes/common.inc'; _drupal_bootstrap_full(); print("_drupal_bootstrap()"); // <---Eddig már nem jut el ...
common.inc, drupal_bootstrap_full():
... if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') { module_invoke_all('init'); print("drupal_bootstrap_full()"); // <---Eddig már nem jut el } ...
module.inc, module_invoke_all():
function module_invoke_all() { $args = func_get_args(); $hook = $args[0]; unset($args[0]); $return = array(); print_r(module_implements($hook)); // <--- Kiírja az összes modult, amiben van MODULNÉV_init foreach (module_implements($hook) as $module) { $function = $module .'_'. $hook; $result = call_user_func_array($function, $args); if (isset($result) && is_array($result)) { $return = array_merge_recursive($return, $result); } else if (isset($result)) { $return[] = $result; } } return $return; }
A foreach ciklus elhasal az fb_init és a mobileplugin_init miatt (az fb_init a facebook modulban van), ezek ugyanis nem futnak le végig. Megnéztem, hol akadnak el és addig trükköztem, hogy lefussanak végig és elértem, hogy a fenti module_invoke_all is végig lefut, de az eredmény ugyanaz a nagy semmi.
Az összes eddigi most lefut, az index.php továbblép a drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
soron, de megint elakad a $return = menu_execute_active_handler();
sorban.
Mi történhetett?
Miért nem localhoston nézed
Miért nem localhoston nézed meg? Mi van az error logban? Az fb egyénként lehet gyenge láncszem, elég sokmindent csinál hook initben, el tudom képzelni, hogy felzabálja az erőforrásokat.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
logban a választ
„Mi történhetett?”
Ha nincs hibaüzenet az azt jelenti, hogy vagy le van tiltva, vagy el se jut a dolog addig, hogy ki tudja írni a php a hibaüzenetet. Érdemes megnézni a webszerver error logját.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
error_log
Sosem láttam még ezt a fájlt, pedig kiüti a szemem :-(
A Drupal gyökérkönyvtárában van, a neve error_log és ide vannak átírányítva a PHP hibák. Nos, e szerint a content.module 1475 sorában:
Call to undefined function node_get_types()
A címlapot egy nézet adja és a nézet használja a content_fields() függvényt és ebben van az ominózus.
Fox Mulder
jobb helyen aligha lehetne
mint a gyokerben.
Nade. node_get_types() volt meg D6-ban. toljal egy if (!function_exists('node_get_types')) error_log(print_r(debug_backtrace(), TRUE), 4) osztan nezegesd a backtrace-t az error logban, hogy sikerult a content module-t berantani es meghivni a node elott??
Miből derül ki?
Köszönöm a segítséget! Miből kéne, hogy kiderüljön, hogy a node modul már be van töltve? Ez a sorrend:
UI.: A content modul mellett a menu.inc 411. sorában van egy szintén definiálatlan node_load(). Mikor és hol kellene betöltődnie a node modulnak?
UI2.: ...és a user_access() is undefined a views_plugin_display.inc fájlban.
Fox Mulder
Nézz már bele a system
Nézz már bele a system táblába, nem lett-e valahogy kikapcsolva a node és a user modul? (status = 0)
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Nem
Nem, mindkettőnél status = 1.
Megnéztem egy másik D6 honlapomon, hogy a _drupal_bootstrap_full() (common.inc) végén lévő module_invoke_all('init') függvényhívás normális esetben a core modulok hook_init implementációit is futtatja, a hibás honlapon viszont csak a contrib modulok érintettek, egy core modul sem.
Fox Mulder
Nem az initnél lesz a gáz. A
Nem az initnél lesz a gáz. A node_get_types() a node.module-ben van. A .module fájlok a bootstrapben a module_load_all() függvénnyel kerülnek betöltésre.
Kerest meg a http://api.drupal.org/api/drupal/includes--common.inc/function/_drupal_b... függvényt, és ha a module_load_all elé beírod, hogy hogy print_r(module_list(TRUE, FALSE)); akkor milyen listát kapsz vissza? Ez két okból sem rossz, egyrészt ha nincs eredmény, akkor már tudjuk, hogy a bootstrapban a module_load_all előtt kell keresni a bűnöst, másrészt meg megtudjuk, hogy milyen modulok .module fájljai lesznek betöltve.
Apropó, modules/node/node.module fálj létezik a szerveren egyáltalán? Lehet, hogy drupal_load nem ad vissza hibát, ha nincs .module fálj egy bekapcsolt modulhoz.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Két teszt
Van localhoston egy működő D6 teszt célra, a "gyanús" modulok közül ehhez is van fb, webform, mimemail. A javaslatod kiírja az összes bekapcsolt contrib ÉS core modult, a beteg lapon viszont csak a contrib modulokat.
Fox Mulder
Itt volt a megoldás!
Mármint a system táblában, csak nem a `status`-sal volt gond, hanem a `filename`-mel.
Így kezdődött: volt egy kitömörített drupal a sites/all/modules-ban (ne kérdezzétek, hogy került oda).
"-Miafeneezitt" -> törlés.
Nem a webform és mimemail modulok frissítése volt a hiba kiváltója, hanem ez a lépés (fél másodperc telt el a kettő között). Mostanra ugyanis kiderült, hogy a sytem táblában a core modulokhoz tartozó `filename` modules/MODUL/stb. helyett sites/all/modules/DRUPAL/modules/MODUL/stb. volt. Nem jelentkezett semmi hiba, amíg ott is volt egy drupal.
Javítottam a system táblát, javítottam 276 rossz `file` mezőhöz tartozó értéket a menu_router táblában és lőn.
Tanulság: ne csináljunk hülyeségeket.
Fox Mulder