[OJS3.5] Blank page - Profile

Describe the issue or problem
Profile shows blank page after some browsing. It seems like this problem is caused after changing language of the OJS system (but I’m not 100% sure)

Cleaning cache from activity panel solves the problem… but this is happening over and over again and I can’t keep cleaning cache over and over again.

Steps I took leading up to the issue
For example:

  1. change language one or two times
  2. Click on “profile” (user menu)
  3. Shows blank page
  4. Clean cache from Administration settings
  5. Back showing the profile.

What application are you using?

OJS3.5

Hi @Pedro_Felipe_Rocha,

Are you able to check your PHP error logs and report on error messages found there? That typically provides more clues as to what is occurring. If unsure of how to check your error log, please see this post here: How do I find my PHP error log?

Best regards,

Roger
PKP Tema

1 Like

Hi, @rcgillis

After some time studying the errors log, think I found the problem.

fatal smarty error. The log line (repeated at least 8 times during the day):

[14-Oct-2025 23:56:15 America/Fortaleza] PHP Fatal error: Uncaught → Smarty: undefined extension class ‘Smarty_Internal_Method_SmartyHelp’ ←
thrown in /home3/pedr7410/public_html/lib/pkp/lib/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php on line 62

Once I’m not really some expert, asked GPT to analyze the log line:

Summary

Root cause

This error originates from Smarty’s internal method resolution system.

In OJS/PKP, the SmartyHelp class (method handler for contextual help links like the “?” icons) is registered internally by the template manager. However, in this installation the Smarty runtime attempts to call:

Smarty_Internal_Method_SmartyHelp

but the corresponding PHP class file cannot be found or loaded.

As a result, Smarty throws a fatal error at:

lib/pkp/lib/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php:62

The OJS request then terminates before any HTML output, producing a blank white page (HTTP 500).

How this happens

The problem typically appears when:

  1. The cached compiled templates in /cache/t_compile/ reference an old or missing Smarty method (SmartyHelp).

  2. The file smarty_internal_method_smartyhelp.php is missing or corrupted in

    /lib/pkp/lib/vendor/smarty/smarty/libs/sysplugins/.

  3. Or, after certain plugin or template updates, the template cache keeps a reference to the now-missing extension class.

In all these cases, Smarty tries to call an internal method that doesn’t exist in the current runtime environment.

Temporary workaround

Manually clearing the OJS cache (especially /cache/t_compile/ and /cache/t_cache/) forces Smarty to recompile templates, which removes the stale reference.

That’s why the blank page disappears after clearing cache — but the problem recurs whenever the compiled template cache becomes invalid again.

Suggested permanent fix

  1. Check for the file:

/lib/pkp/lib/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_smartyhelp.php

If missing, restore it from the original OJS 3.5 distribution or from a clean smarty/ package (version 4.3.x used by PKP).
If present, ensure correct file permissions and ownership.

  1. Clear all OJS caches:
    This ensures Smarty will regenerate compiled templates with the valid method registry.

  2. (Optional) If contextual help is not used, you can disable it in config.inc.php:

[general]
enable_help = Off
This prevents Smarty from calling the SmartyHelp method at all.

Looks like it found the error and the solution. I just don’t have enough knowlege to confirm this will work.

Hi @Pedro_Felipe_Rocha,

If I had to guess, I would suspect you have some template .tpl files that still contain references to a Smarty extension that’s been removed. Is it possible that when you upgraded to 3.5 you somehow left some .tpl content from 3.3 or 3.4 in place?

The error message should contain more text that identifies the exact file; if you can post that I can possibly identify the template to look in. But if you need to search, look for a .tpl file that contains the text {help in it.

Regards,
Alec Smecher
Public Knowledge Project Team

1 Like

@asmecher Thx for your help, I did what you suggested: looked for a .tpl file that contains the text {help in it.

Think I found the problematic lines.

I did not update my OJS, it was installed from scratch the 3.5.

After analyzing the OJS package (version 3.5.0), I found that all {help …} calls — which trigger the “Smarty: undefined extension class ‘Smarty_Internal_Method_SmartyHelp’” fatal error — come exclusively from the openid plugin (that I indeed use).

These templates still reference the old Smarty {help} extension that was removed in OJS 3.5:

  1. plugins/generic/openid/templates/user/publicProfileForm.tpl [line 13]
    code snippet: {help file=“user-profile” class=“pkp_help_tab”}

  2. plugins/generic/openid/templates/user/identityForm.tpl [line: 34]

code snippet: {help file=“user-profile” class=“pkp_help_tab”}

  1. plugins/generic/openid/templates/user/contactForm.tpl [line: 20]

code snippet: {help file=“user-profile” class=“pkp_help_tab”}

  1. plugins/generic/openid/templates/user/changePassword.tpl [line: 20]

code snippet: {help file=“user-profile” class=“pkp_help_tab”}

  1. plugins/generic/openid/templates/user/apiProfileForm.tpl [line: 21]

code snippet: {help file=“user-profile” class=“pkp_help_tab”}

Disabling the openID plugin would solve, but really don’t want to do that.

The best solution is probably disabling (commenting) these lines, right?

Hi @Pedro_Felipe_Rocha,

Ah, yes – it appears that adaptations from 3.4.0 to 3.5.0 were not completely made ino those template files. I’ll notify the developer maintaining that plugin, and meanwhile, you can just delete those lines from the template files.

Regards,
Alec Smecher
Public Knowledge Project Team

1 Like

Hi again.

Just to confirm that deleting the lines mentioned above really solves the problem. The problem vanished after that.

1 Like

This topic was automatically closed after 11 days. New replies are no longer allowed.