Hello Matthias,
The same Smarty Validate Criteria file is loaded twice – but from two different directories.
First loaded from:
/var/www/html/fp3049/fp-includes/fp-smartyplugins/validate_criteria.notEmpty.php
Then again from:
/var/www/html/fp-includes/fp-smartyplugins/validate_criteria.notEmpty.php
laborix wrote: Tue Jan 27, 2026 7:00 pm
Code: Select all
Fatal error: Cannot redeclare function smarty_validate_criteria_notEmpty() (previously declared in /var/www/html/fp3049/fp-includes/fp-smartyplugins/validate_criteria.notEmpty.php:36) in /var/www/html/fp-includes/fp-smartyplugins/validate_criteria.notEmpty.php on line 36
Stack trace: #0 /var/www/html/admin/includes/panels.prototypes.php(141): AdminPanelActionValidated->onsubmit() #1 /var/www/html/admin/includes/panels.prototypes.php(218): AdminPanelAction->exec() #2 /var/www/html/admin/main.php(96): AdminPanelActionValidated->exec() #3 /var/www/html/admin/main.php(218): main() #4 /var/www/html/admin.php(5): require('...') #5 {main}
Wild guess: You have (at least) two FlatPress code trees, and NGINX/PHP-FPM "mixes" them in one request. Apache typically does not show this because DocumentRoot/Script paths are often more consistent there.
Not "PrettyURLs" per se, but path/root mismatch:
- NGINX executes some PHP files from installation A,
- but then includes parts (Smarty plugins) from installation B,
- and as a result,
smarty_validate_criteria_notEmpty() is declared twice -> Fatal.
Possible causes:
- Two installations exist in parallel (
/var/www/html/… and
/var/www/html/fp3049/…) and NGINX sometimes points to the wrong one.
- In the NGINX configuration, root/fastcgi_param SCRIPT_FILENAME/try_files are not consistent (e.g., different root in location / than in location ~ \.php$).
- Symlinks/bind mounts + $document_root instead of $realpath_root -> PHP sees "different" physical paths.
Check whether both directories exist:
-
/var/www/html/fp-includes/...
-
/var/www/html/fp3049/fp-includes/...
Decide which installation is the real one, and:
- remove/move the other one, or
- set NGINX root explicitly to exactly this one.
Code: Select all
root /var/www/html/fp3049; # or /var/www/html
location / {
try_files $uri $uri/ /index.php?$args; # or try_files $uri $uri/ /index.php$is_args$args;
}
Best regards,
Frank