This was a developer mistake – a misplaced ending brace, which made the above function a nested function.
I see a lot of questions related to the undefined function error in SO. Let me note down this as an answer, in case someone else have the same issue with function scope.
Things I tried to troubleshoot first:
- Searched for the php file with the function definition in it. Verified that the file exists.
- Verified that the require (or include) statement for the above file exists in the page. Also, verified the absolute path in the require/include is correct.
- Verified that the filename is spelled correctly in the require statement.
- Echoed a word in the included file, to see if it has been properly included.
- Defined a separate function at the end of file, and called it. It worked too.
It was difficult to trace the braces, since the functions were very long – problem with legacy systems. Further steps to troubleshoot were this:
- I already defined a simple print function at the end of included file. I moved it to just above the “undefined function”. That made it undefined too.
- Identified this as some scope issue.
- Used the Netbeans collapse (code fold) feature to check the function just above this one. So, the 1000 lines function above just collapsed along with this one, making this a nested function.
- Once the problem identified, cut-pasted the function to the end of file, which solved the issue.