EDIT Nov 10: This has been solved by Letharion's suggestion to do a md5 file compare of my file with an original package file containing the function that was throwing the error.
--
I was referred here by https://www.drupal.org/node/2336585#comment-9311707
I've spent the better part of two days on this. I have searched and tried suggestions and so far no dice. Summarizing as much as possible:
Recently my WHM/cPanel auto-updated itself and locked us out of phpMyAdmin short of upgrading to MySQL 5.5 or higher -- when I tried accessing phpMyAdmin one day I was confronted with a red box with red text stating to upgrade. We've been ignoring it but two days ago we needed to get into our database so we had cPanel perform an unassisted upgrade to SQL 5.5.
Process went perfectly smooth and things seemed normal until we went to edit a node on our Drupal 6.33 and received a WSOD. Reloading a different page gets this error:
warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'node_page_edit' not found or invalid function name in /home/SITENAME/public_html/includes/menu.inc on line 350.
Line 350 of my unmodified menu.inc is within the function menu_execute_active_handler() as follows:
345 if ($router_item = menu_get_item($path)) {
346 if ($router_item['access']) {
347 if ($router_item['file']) {
348 require_once($router_item['file']);
349 }
350 return call_user_func_array($router_item['page_callback'], $router_item['page_arguments']);
351 }
352 else {
353 return MENU_ACCESS_DENIED;
354 }
355 }
356 return MENU_NOT_FOUND;
After pulling out some hair I discovered that during the SQL upgrade the server automagically updated it's PHP from our longstanding 5.2-branch to now 5.3.29. I have since learned that D6 does not 'officially' support PHP 5.3.
Looking up call-user-func-array(), indeed it has changed in PHP 5.3+
Can anyone shed some light on how to patch this for now? We are still using D6 because a few modules we need are not ready for D7 yet.
Thank you very much in advance, BigMike
-- Additional Info:
So far everything else including a good number of contrib modules are working as expected. The only error we have seen is call_user_func_array() expects parameter 1 to be a valid callback and only when trying to create (node_add) or edit (node_page_edit) nodes.
I did a dump on $router_item and call-user-func-array() is working for node_page_view, drupal_get_form, and statistics_node_tracker page_callback's but not working for node_page_edit or node_add.
Anything that uses drupal_get_form is fine, which so far I've tested creating and editing both blocks and taxonomy and both function as expected. So for kicks I intercepted 'node_page_edit' and changed it to 'drupal_get_form' and now my node edit pages load -- no longer white screen of death -- but have a ton of other errors and nothing useful is outputted to the screen.
We also get an error on our Clone page (Clone module v6.x-1.3),
warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'node_form' not found or invalid function name in /home/SITENAME/public_html/includes/form.inc on line 421.
which in form.inc is...
419 // If $callback was returned by a hook_forms() implementation, call it.
420 // Otherwise, call the function named after the form id.
421 $form = call_user_func_array(isset($callback) ? $callback : $form_id, $args);
Dumping $callback here and it's an ordinary string of value "node_form".
So I need to figure out how to manipulate call_user_func_array() for use under PHP 5.3.x. There are a few tips on the php.net site but so far I can't figure it out.
So far I've tried...
return call_user_func_array($router_item['page_callback'], array(&$router_item['page_arguments']));
and
return call_user_func_array(array($router_item['page_arguments'], $router_item['page_callback']), $router_item['page_arguments']);
...and I've tried adding ampersands and changing array orders... I'm really just spit balling as this is my first time ever working with call_user_func_array().
Any help is GREATLY appreciated! Our website is http://www.marlincrawler.com and most things are working as they should. Not being able to edit content isn't the end of the world as we can do that in the DB, but we need to be able to create content and not having this feature is a critical issue for us.